2014-03-01 01:05:55 +01:00
|
|
|
# HG changeset patch
|
2014-04-25 15:11:58 +02:00
|
|
|
# Parent 1055b218140c3cc19228c47878a68740363d80dd
|
2014-03-01 01:05:55 +01:00
|
|
|
Do not throw away already open sockets for X11 forwarding if another socket
|
|
|
|
family is not available for bind()
|
|
|
|
|
2014-04-14 23:53:01 +02:00
|
|
|
diff --git a/openssh-6.6p1/channels.c b/openssh-6.6p1/channels.c
|
|
|
|
--- a/openssh-6.6p1/channels.c
|
|
|
|
+++ b/openssh-6.6p1/channels.c
|
|
|
|
@@ -3476,22 +3476,24 @@ x11_create_display_inet(int x11_display_
|
2014-03-01 01:05:55 +01:00
|
|
|
}
|
|
|
|
if (ai->ai_family == AF_INET6)
|
|
|
|
sock_set_v6only(sock);
|
|
|
|
if (x11_use_localhost)
|
|
|
|
channel_set_reuseaddr(sock);
|
|
|
|
if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) {
|
|
|
|
debug2("bind port %d: %.100s", port, strerror(errno));
|
|
|
|
close(sock);
|
|
|
|
-
|
|
|
|
+ continue;
|
|
|
|
+ /* do not remove successfully opened sockets
|
|
|
|
for (n = 0; n < num_socks; n++) {
|
|
|
|
close(socks[n]);
|
|
|
|
}
|
|
|
|
num_socks = 0;
|
|
|
|
break;
|
|
|
|
+ */
|
|
|
|
}
|
|
|
|
socks[num_socks++] = sock;
|
|
|
|
if (num_socks == NUM_SOCKS)
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
freeaddrinfo(aitop);
|
|
|
|
if (num_socks > 0)
|
|
|
|
break;
|