mirror of
https://github.com/PowerShell/openssh-portable.git
synced 2025-07-28 08:14:24 +02:00
- djm@cvs.openbsd.org 2005/10/11 23:37:37
[channels.c] bz #1076 set SO_REUSEADDR on X11 forwarding listner sockets, preventing bind() failure when a previous connection's listeners are in TIME_WAIT, reported by plattner AT inf.ethz.ch; ok dtucker@
This commit is contained in:
parent
39eda6eb6a
commit
5e7fd076f5
@ -12,6 +12,11 @@
|
|||||||
fix regression I introduced in 4.2: X11 forwardings initiated after
|
fix regression I introduced in 4.2: X11 forwardings initiated after
|
||||||
a session has exited (e.g. "(sleep 5; xterm) &") would not start.
|
a session has exited (e.g. "(sleep 5; xterm) &") would not start.
|
||||||
bz #1086 reported by t8m AT centrum.cz; ok markus@ dtucker@
|
bz #1086 reported by t8m AT centrum.cz; ok markus@ dtucker@
|
||||||
|
- djm@cvs.openbsd.org 2005/10/11 23:37:37
|
||||||
|
[channels.c]
|
||||||
|
bz #1076 set SO_REUSEADDR on X11 forwarding listner sockets, preventing
|
||||||
|
bind() failure when a previous connection's listeners are in TIME_WAIT,
|
||||||
|
reported by plattner AT inf.ethz.ch; ok dtucker@
|
||||||
|
|
||||||
20051102
|
20051102
|
||||||
- (dtucker) [openbsd-compat/bsd-misc.c] Bug #1108: fix broken strdup().
|
- (dtucker) [openbsd-compat/bsd-misc.c] Bug #1108: fix broken strdup().
|
||||||
@ -3145,4 +3150,4 @@
|
|||||||
- (djm) Trim deprecated options from INSTALL. Mention UsePAM
|
- (djm) Trim deprecated options from INSTALL. Mention UsePAM
|
||||||
- (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu
|
- (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu
|
||||||
|
|
||||||
$Id: ChangeLog,v 1.3928 2005/11/05 03:52:50 djm Exp $
|
$Id: ChangeLog,v 1.3929 2005/11/05 03:53:39 djm Exp $
|
||||||
|
27
channels.c
27
channels.c
@ -39,7 +39,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "includes.h"
|
#include "includes.h"
|
||||||
RCSID("$OpenBSD: channels.c,v 1.225 2005/10/10 10:23:08 djm Exp $");
|
RCSID("$OpenBSD: channels.c,v 1.226 2005/10/11 23:37:37 djm Exp $");
|
||||||
|
|
||||||
#include "ssh.h"
|
#include "ssh.h"
|
||||||
#include "ssh1.h"
|
#include "ssh1.h"
|
||||||
@ -1230,6 +1230,19 @@ port_open_helper(Channel *c, char *rtype)
|
|||||||
xfree(remote_ipaddr);
|
xfree(remote_ipaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
channel_set_reuseaddr(int fd)
|
||||||
|
{
|
||||||
|
int on = 1;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Set socket options.
|
||||||
|
* Allow local port reuse in TIME_WAIT.
|
||||||
|
*/
|
||||||
|
if (setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1)
|
||||||
|
error("setsockopt SO_REUSEADDR fd %d: %s", fd, strerror(errno));
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This socket is listening for connections to a forwarded TCP/IP port.
|
* This socket is listening for connections to a forwarded TCP/IP port.
|
||||||
*/
|
*/
|
||||||
@ -2191,7 +2204,7 @@ channel_setup_fwd_listener(int type, const char *listen_addr, u_short listen_por
|
|||||||
const char *host_to_connect, u_short port_to_connect, int gateway_ports)
|
const char *host_to_connect, u_short port_to_connect, int gateway_ports)
|
||||||
{
|
{
|
||||||
Channel *c;
|
Channel *c;
|
||||||
int sock, r, success = 0, on = 1, wildcard = 0, is_client;
|
int sock, r, success = 0, wildcard = 0, is_client;
|
||||||
struct addrinfo hints, *ai, *aitop;
|
struct addrinfo hints, *ai, *aitop;
|
||||||
const char *host, *addr;
|
const char *host, *addr;
|
||||||
char ntop[NI_MAXHOST], strport[NI_MAXSERV];
|
char ntop[NI_MAXHOST], strport[NI_MAXSERV];
|
||||||
@ -2278,13 +2291,8 @@ channel_setup_fwd_listener(int type, const char *listen_addr, u_short listen_por
|
|||||||
verbose("socket: %.100s", strerror(errno));
|
verbose("socket: %.100s", strerror(errno));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
* Set socket options.
|
channel_set_reuseaddr(sock);
|
||||||
* Allow local port reuse in TIME_WAIT.
|
|
||||||
*/
|
|
||||||
if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on,
|
|
||||||
sizeof(on)) == -1)
|
|
||||||
error("setsockopt SO_REUSEADDR: %s", strerror(errno));
|
|
||||||
|
|
||||||
debug("Local forwarding listening on %s port %s.", ntop, strport);
|
debug("Local forwarding listening on %s port %s.", ntop, strport);
|
||||||
|
|
||||||
@ -2710,6 +2718,7 @@ x11_create_display_inet(int x11_display_offset, int x11_use_localhost,
|
|||||||
error("setsockopt IPV6_V6ONLY: %.100s", strerror(errno));
|
error("setsockopt IPV6_V6ONLY: %.100s", strerror(errno));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
channel_set_reuseaddr(sock);
|
||||||
if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) {
|
if (bind(sock, ai->ai_addr, ai->ai_addrlen) < 0) {
|
||||||
debug2("bind port %d: %.100s", port, strerror(errno));
|
debug2("bind port %d: %.100s", port, strerror(errno));
|
||||||
close(sock);
|
close(sock);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user