diff options
Diffstat (limited to 'io')
| -rw-r--r-- | io/channel-socket.c | 8 | ||||
| -rw-r--r-- | io/dns-resolver.c | 4 | ||||
| -rw-r--r-- | io/net-listener.c | 3 |
3 files changed, 11 insertions, 4 deletions
diff --git a/io/channel-socket.c b/io/channel-socket.c index de259f7eed..606ec97cf7 100644 --- a/io/channel-socket.c +++ b/io/channel-socket.c @@ -487,15 +487,15 @@ static ssize_t qio_channel_socket_readv(QIOChannel *ioc, memset(control, 0, CMSG_SPACE(sizeof(int) * SOCKET_MAX_FDS)); -#ifdef MSG_CMSG_CLOEXEC - sflags |= MSG_CMSG_CLOEXEC; -#endif - msg.msg_iov = (struct iovec *)iov; msg.msg_iovlen = niov; if (fds && nfds) { msg.msg_control = control; msg.msg_controllen = sizeof(control); +#ifdef MSG_CMSG_CLOEXEC + sflags |= MSG_CMSG_CLOEXEC; +#endif + } retry: diff --git a/io/dns-resolver.c b/io/dns-resolver.c index 743a0efc87..a5946a93bf 100644 --- a/io/dns-resolver.c +++ b/io/dns-resolver.c @@ -122,6 +122,10 @@ static int qio_dns_resolver_lookup_sync_inet(QIODNSResolver *resolver, .ipv4 = iaddr->ipv4, .has_ipv6 = iaddr->has_ipv6, .ipv6 = iaddr->ipv6, +#ifdef IPPROTO_MPTCP + .has_mptcp = iaddr->has_mptcp, + .mptcp = iaddr->mptcp, +#endif }; (*addrs)[i] = newaddr; diff --git a/io/net-listener.c b/io/net-listener.c index 46c2643d00..1c984d69c6 100644 --- a/io/net-listener.c +++ b/io/net-listener.c @@ -292,6 +292,9 @@ static void qio_net_listener_finalize(Object *obj) QIONetListener *listener = QIO_NET_LISTENER(obj); size_t i; + if (listener->io_notify) { + listener->io_notify(listener->io_data); + } qio_net_listener_disconnect(listener); for (i = 0; i < listener->nsioc; i++) { |