[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v14 15/17] net: stream: move to QIO to enable additional para
From: |
Markus Armbruster |
Subject: |
Re: [PATCH v14 15/17] net: stream: move to QIO to enable additional parameters |
Date: |
Fri, 21 Oct 2022 12:35:29 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux) |
Philippe Mathieu-Daudé <philmd@linaro.org> writes:
> On 21/10/22 11:09, Laurent Vivier wrote:
>> Use QIOChannel, QIOChannelSocket and QIONetListener.
>> This allows net/stream to use all the available parameters provided by
>> SocketAddress.
>> Signed-off-by: Laurent Vivier <lvivier@redhat.com>
>> Acked-by: Michael S. Tsirkin <mst@redhat.com>
>> ---
>> net/stream.c | 492 +++++++++++++++++-------------------------------
>> qemu-options.hx | 4 +-
>> 2 files changed, 178 insertions(+), 318 deletions(-)
>
>> -static void net_stream_accept(void *opaque)
>> +static void net_stream_server_listening(QIOTask *task, gpointer opaque)
>> {
>> NetStreamState *s = opaque;
>> - struct sockaddr_storage saddr;
>> - socklen_t len;
>> - int fd;
>> -
>> - for (;;) {
>> - len = sizeof(saddr);
>> - fd = qemu_accept(s->listen_fd, (struct sockaddr *)&saddr, &len);
>> - if (fd < 0 && errno != EINTR) {
>> - return;
>> - } else if (fd >= 0) {
>> - qemu_set_fd_handler(s->listen_fd, NULL, NULL, NULL);
>> - break;
>> - }
>> - }
>> + QIOChannelSocket *listen_sioc = QIO_CHANNEL_SOCKET(s->listen_ioc);
>> + SocketAddress *addr;
>> + int ret;
>> - s->fd = fd;
>> - s->nc.link_down = false;
>> - net_stream_connect(s);
>> - switch (saddr.ss_family) {
>> - case AF_INET: {
>> - struct sockaddr_in *saddr_in = (struct sockaddr_in *)&saddr;
>> -
>> - qemu_set_info_str(&s->nc, "connection from %s:%d",
>> - inet_ntoa(saddr_in->sin_addr),
>> - ntohs(saddr_in->sin_port));
>> - break;
>> + if (listen_sioc->fd < 0) {
>> + qemu_set_info_str(&s->nc, "connection error");
>> + return;
>> }
>> - case AF_UNIX: {
>> - struct sockaddr_un saddr_un;
>> - len = sizeof(saddr_un);
>> - getsockname(s->listen_fd, (struct sockaddr *)&saddr_un, &len);
>> - qemu_set_info_str(&s->nc, "connect from %s", saddr_un.sun_path);
>> - break;
>> - }
>> - default:
>> - g_assert_not_reached();
>> + addr = qio_channel_socket_get_local_address(listen_sioc, NULL);
>> + g_assert(addr != NULL);
>
> Missing propagating Error* (observed in v12).
*If* this is really a programming error: what about &error_abort?
[...]
- [PATCH v14 08/17] net: stream: Don't ignore EINVAL on netdev socket connection, (continued)
- [PATCH v14 08/17] net: stream: Don't ignore EINVAL on netdev socket connection, Laurent Vivier, 2022/10/21
- [PATCH v14 09/17] net: stream: add unix socket, Laurent Vivier, 2022/10/21
- [PATCH v14 01/17] net: introduce convert_host_port(), Laurent Vivier, 2022/10/21
- [PATCH v14 13/17] qemu-sockets: move and rename SocketAddress_to_str(), Laurent Vivier, 2022/10/21
- [PATCH v14 07/17] net: socket: Don't ignore EINVAL on netdev socket connection, Laurent Vivier, 2022/10/21
- [PATCH v14 04/17] qapi: net: introduce a way to bypass qemu_opts_parse_noisily(), Laurent Vivier, 2022/10/21
- [PATCH v14 15/17] net: stream: move to QIO to enable additional parameters, Laurent Vivier, 2022/10/21
- [PATCH v14 17/17] net: stream: add QAPI events to report connection state, Laurent Vivier, 2022/10/21
- [PATCH v14 10/17] net: dgram: make dgram_dst generic, Laurent Vivier, 2022/10/21
- [PATCH v14 03/17] net: simplify net_client_parse() error management, Laurent Vivier, 2022/10/21
- [PATCH v14 06/17] qapi: net: add stream and dgram netdevs, Laurent Vivier, 2022/10/21
- [PATCH v14 14/17] qemu-sockets: update socket_uri() and socket_parse() to be consistent, Laurent Vivier, 2022/10/21