diff --git a/src/dnsmasq.c b/src/dnsmasq.c index 2ab1bda..00551a1 100644 --- a/src/dnsmasq.c +++ b/src/dnsmasq.c @@ -1345,10 +1345,15 @@ static void check_dns_listeners(fd_set *set, time_t now) while ((confd = accept(listener->tcpfd, NULL, NULL)) == -1 && errno == EINTR); - if (confd == -1 || - getsockname(confd, (struct sockaddr *)&tcp_addr, &tcp_len) == -1) + if (confd == -1) continue; + if (getsockname(confd, (struct sockaddr *)&tcp_addr, &tcp_len) == -1) + { + close(confd); + continue; + } + if (option_bool(OPT_NOWILD)) iface = listener->iface; /* May be NULL */ else