]> andersk Git - openssh.git/blobdiff - channels.c
- markus@cvs.openbsd.org 2002/12/13 15:20:52
[openssh.git] / channels.c
index fe99cdbecd348b2668fc7bd829b9cd72c0c30b83..1586ea397cc2fe831228f096cc3e71d7ecb038f8 100644 (file)
@@ -39,7 +39,7 @@
  */
 
 #include "includes.h"
-RCSID("$OpenBSD: channels.c,v 1.180 2002/07/04 08:12:15 deraadt Exp $");
+RCSID("$OpenBSD: channels.c,v 1.184 2002/12/13 10:03:15 markus Exp $");
 
 #include "ssh.h"
 #include "ssh1.h"
@@ -578,7 +578,7 @@ channel_send_open(int id)
                log("channel_send_open: %d: bad id", id);
                return;
        }
-       debug("send channel open %d", id);
+       debug2("channel %d: send open", id);
        packet_start(SSH2_MSG_CHANNEL_OPEN);
        packet_put_cstring(c->ctype);
        packet_put_int(c->self);
@@ -588,15 +588,15 @@ channel_send_open(int id)
 }
 
 void
-channel_request_start(int local_id, char *service, int wantconfirm)
+channel_request_start(int id, char *service, int wantconfirm)
 {
-       Channel *c = channel_lookup(local_id);
+       Channel *c = channel_lookup(id);
 
        if (c == NULL) {
-               log("channel_request_start: %d: unknown channel id", local_id);
+               log("channel_request_start: %d: unknown channel id", id);
                return;
        }
-       debug("channel request %d: %s", local_id, service) ;
+       debug("channel %d: request %s", id, service) ;
        packet_start(SSH2_MSG_CHANNEL_REQUEST);
        packet_put_int(c->remote_id);
        packet_put_cstring(service);
@@ -875,7 +875,7 @@ channel_pre_x11_open(Channel *c, fd_set * readset, fd_set * writeset)
 static int
 channel_decode_socks4(Channel *c, fd_set * readset, fd_set * writeset)
 {
-       u_char *p, *host;
+       char *p, *host;
        int len, have, i, found;
        char username[256];
        struct {
@@ -2022,7 +2022,6 @@ channel_setup_fwd_listener(int type, const char *listen_addr, u_short listen_por
        struct addrinfo hints, *ai, *aitop;
        const char *host;
        char ntop[NI_MAXHOST], strport[NI_MAXSERV];
-       struct linger linger;
 
        success = 0;
        host = (type == SSH_CHANNEL_RPORT_LISTENER) ?
@@ -2065,13 +2064,13 @@ channel_setup_fwd_listener(int type, const char *listen_addr, u_short listen_por
                        continue;
                }
                /*
-                * Set socket options.  We would like the socket to disappear
-                * as soon as it has been closed for whatever reason.
+                * Set socket options.
+                * Allow local port reuse in TIME_WAIT.
                 */
-               setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
-               linger.l_onoff = 1;
-               linger.l_linger = 5;
-               setsockopt(sock, SOL_SOCKET, SO_LINGER, &linger, sizeof(linger));
+               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);
 
                /* Bind the socket to the address. */
This page took 0.039168 seconds and 4 git commands to generate.