You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
836 B
30 lines
836 B
diff --git a/channels.c b/channels.c |
|
--- a/channels.c |
|
+++ b/channels.c |
|
@@ -3933,16 +3933,26 @@ x11_create_display_inet(int x11_display_ |
|
if (ai->ai_family == AF_INET6) |
|
sock_set_v6only(sock); |
|
if (x11_use_localhost) |
|
set_reuseaddr(sock); |
|
if (bind(sock, ai->ai_addr, ai->ai_addrlen) == -1) { |
|
debug2_f("bind port %d: %.100s", port, |
|
strerror(errno)); |
|
close(sock); |
|
+ |
|
+ /* do not remove successfully opened |
|
+ * sockets if the request failed because |
|
+ * the protocol IPv4/6 is not available |
|
+ * (e.g. IPv6 may be disabled while being |
|
+ * supported) |
|
+ */ |
|
+ if (EADDRNOTAVAIL == errno) |
|
+ continue; |
|
+ |
|
for (n = 0; n < num_socks; n++) |
|
close(socks[n]); |
|
num_socks = 0; |
|
break; |
|
} |
|
socks[num_socks++] = sock; |
|
if (num_socks == NUM_SOCKS) |
|
break;
|
|
|