diff options
-rw-r--r-- | CREDITS | 1 | ||||
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | channels.c | 12 | ||||
-rw-r--r-- | sshd.c | 3 |
4 files changed, 16 insertions, 3 deletions
@@ -6,6 +6,7 @@ Theo de Raadt, and Dug Song - Creators of OpenSSH | |||
6 | Andrew Stribblehill <a.d.stribblehill@durham.ac.uk> - Bugfixes | 6 | Andrew Stribblehill <a.d.stribblehill@durham.ac.uk> - Bugfixes |
7 | Andre Lucas <andre.lucas@dial.pipex.com> - build, login and many other fixes | 7 | Andre Lucas <andre.lucas@dial.pipex.com> - build, login and many other fixes |
8 | Andy Sloane <andy@guildsoftware.com> - bugfixes | 8 | Andy Sloane <andy@guildsoftware.com> - bugfixes |
9 | Arkadiusz Miskiewicz <misiek@pld.org.pl> - IPv6 compat fixes | ||
9 | Ben Taylor <bent@clark.net> - Solaris debugging and fixes | 10 | Ben Taylor <bent@clark.net> - Solaris debugging and fixes |
10 | Chip Salzenberg <chip@valinux.com> - Assorted patches | 11 | Chip Salzenberg <chip@valinux.com> - Assorted patches |
11 | Chris Saia <csaia@wtower.com> - SuSE packaging | 12 | Chris Saia <csaia@wtower.com> - SuSE packaging |
@@ -1,6 +1,9 @@ | |||
1 | 20000303 | 1 | 20000303 |
2 | - Added "make host-key" target, Suggestion from Dominik Brettnacher | 2 | - Added "make host-key" target, Suggestion from Dominik Brettnacher |
3 | <domi@saargate.de> | 3 | <domi@saargate.de> |
4 | - Don't permanently fail on bind() if getaddrinfo has more choices left for | ||
5 | us. Needed to work around messy IPv6 on Linux. Patch from Arkadiusz | ||
6 | Miskiewicz <misiek@pld.org.pl> | ||
4 | 7 | ||
5 | 20000302 | 8 | 20000302 |
6 | - Big cleanup of autoconf code | 9 | - Big cleanup of autoconf code |
diff --git a/channels.c b/channels.c index ba4c2bef9..7d5e9a1af 100644 --- a/channels.c +++ b/channels.c | |||
@@ -16,7 +16,7 @@ | |||
16 | */ | 16 | */ |
17 | 17 | ||
18 | #include "includes.h" | 18 | #include "includes.h" |
19 | RCSID("$Id: channels.c,v 1.16 2000/01/17 02:22:55 damien Exp $"); | 19 | RCSID("$Id: channels.c,v 1.17 2000/03/03 11:35:33 damien Exp $"); |
20 | 20 | ||
21 | #include "ssh.h" | 21 | #include "ssh.h" |
22 | #include "packet.h" | 22 | #include "packet.h" |
@@ -935,7 +935,11 @@ channel_request_local_forwarding(u_short port, const char *host, | |||
935 | /* Bind the socket to the address. */ | 935 | /* Bind the socket to the address. */ |
936 | if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) { | 936 | if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) { |
937 | /* address can be in use ipv6 address is already bound */ | 937 | /* address can be in use ipv6 address is already bound */ |
938 | verbose("bind: %.100s", strerror(errno)); | 938 | if (!ai->ai_next) |
939 | error("bind: %.100s", strerror(errno)); | ||
940 | else | ||
941 | verbose("bind: %.100s", strerror(errno)); | ||
942 | |||
939 | close(sock); | 943 | close(sock); |
940 | continue; | 944 | continue; |
941 | } | 945 | } |
@@ -1199,6 +1203,10 @@ x11_create_display_inet(int screen_number, int x11_display_offset) | |||
1199 | debug("bind port %d: %.100s", port, strerror(errno)); | 1203 | debug("bind port %d: %.100s", port, strerror(errno)); |
1200 | shutdown(sock, SHUT_RDWR); | 1204 | shutdown(sock, SHUT_RDWR); |
1201 | close(sock); | 1205 | close(sock); |
1206 | |||
1207 | if (ai->ai_next) | ||
1208 | continue; | ||
1209 | |||
1202 | for (n = 0; n < num_socks; n++) { | 1210 | for (n = 0; n < num_socks; n++) { |
1203 | shutdown(socks[n], SHUT_RDWR); | 1211 | shutdown(socks[n], SHUT_RDWR); |
1204 | close(socks[n]); | 1212 | close(socks[n]); |
@@ -558,7 +558,8 @@ main(int ac, char **av) | |||
558 | debug("Bind to port %s on %s.", strport, ntop); | 558 | debug("Bind to port %s on %s.", strport, ntop); |
559 | 559 | ||
560 | /* Bind the socket to the desired port. */ | 560 | /* Bind the socket to the desired port. */ |
561 | if (bind(listen_sock, ai->ai_addr, ai->ai_addrlen) < 0) { | 561 | if ((bind(listen_sock, ai->ai_addr, ai->ai_addrlen) < 0) && |
562 | (!ai->ai_next)) { | ||
562 | error("Bind to port %s on %s failed: %.200s.", | 563 | error("Bind to port %s on %s failed: %.200s.", |
563 | strport, ntop, strerror(errno)); | 564 | strport, ntop, strerror(errno)); |
564 | close(listen_sock); | 565 | close(listen_sock); |