# HG changeset patch # Parent 44592f09f090e74432f608084069d30d808fda69 Do not throw away already open sockets for X11 forwarding if another socket family is not available for bind() diff --git a/channels.c b/channels.c index f51b7e3..95af47e 100644 --- a/channels.c +++ b/channels.c @@ -4637,6 +4637,13 @@ x11_create_display_inet(struct ssh *ssh, int x11_display_offset, debug2("%s: bind port %d: %.100s", __func__, 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;