X-Git-Url: http://andersk.mit.edu/gitweb/openssh.git/blobdiff_plain/c53c54c28fa463cd232f0d47910fc60bbcdc2571..8afe456df0b0ccd989631f6f6e35f61e9abedea0:/clientloop.c diff --git a/clientloop.c b/clientloop.c index 7259959e..15945a80 100644 --- a/clientloop.c +++ b/clientloop.c @@ -59,7 +59,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: clientloop.c,v 1.97 2002/03/21 15:17:26 jakob Exp $"); +RCSID("$OpenBSD: clientloop.c,v 1.100 2002/04/22 21:04:52 markus Exp $"); #include "ssh.h" #include "ssh1.h" @@ -472,40 +472,33 @@ client_process_net_input(fd_set * readset) } static void -process_cmdline(Buffer *bin, Buffer *bout, Buffer *berr) +process_cmdline(void) { - char string[1024]; void (*handler)(int); char *s, *cmd; u_short fwd_port, fwd_host_port; char buf[1024], sfwd_port[6], sfwd_host_port[6]; int local = 0; - int n; leave_raw_mode(); handler = signal(SIGINT, SIG_IGN); - s = read_passphrase("\r\nssh> ", RP_ECHO); + cmd = s = read_passphrase("\r\nssh> ", RP_ECHO); if (s == NULL) goto out; - cmd = s; - while (*s && isspace(*s)) s++; - if (*s == 0) goto out; - if (strlen(s) < 2 || s[0] != '-' || !(s[1] == 'L' || s[1] == 'R')) { - log("Invalid command"); + log("Invalid command."); goto out; } if (s[1] == 'L') local = 1; if (!local && !compat20) { - log("Not supported for SSH protocol version 1"); + log("Not supported for SSH protocol version 1."); goto out; } - s += 2; while (*s && isspace(*s)) s++; @@ -514,25 +507,24 @@ process_cmdline(Buffer *bin, Buffer *bout, Buffer *berr) sfwd_port, buf, sfwd_host_port) != 3 && sscanf(s, "%5[0-9]/%255[^/]/%5[0-9]", sfwd_port, buf, sfwd_host_port) != 3) { - log("Bad forwarding specification"); + log("Bad forwarding specification."); goto out; } if ((fwd_port = a2port(sfwd_port)) == 0 || (fwd_host_port = a2port(sfwd_host_port)) == 0) { - log("Bad forwarding port(s)"); + log("Bad forwarding port(s)."); goto out; } if (local) { - n = channel_setup_local_fwd_listener(fwd_port, buf, - fwd_host_port, options.gateway_ports); - if (n <= 0) { - log("Port forwarding failed"); + if (channel_setup_local_fwd_listener(fwd_port, buf, + fwd_host_port, options.gateway_ports) < 0) { + log("Port forwarding failed."); goto out; } } else channel_request_remote_forwarding(fwd_port, buf, fwd_host_port); - log("Forwarding port"); + log("Forwarding port."); out: signal(SIGINT, handler); enter_raw_mode(); @@ -665,7 +657,7 @@ Supported escape sequences:\r\n\ continue; case 'C': - process_cmdline(bin, bout, berr); + process_cmdline(); continue; default: @@ -1322,6 +1314,7 @@ static void client_init_dispatch_20(void) { dispatch_init(&dispatch_protocol_error); + dispatch_set(SSH2_MSG_CHANNEL_CLOSE, &channel_input_oclose); dispatch_set(SSH2_MSG_CHANNEL_DATA, &channel_input_data); dispatch_set(SSH2_MSG_CHANNEL_EOF, &channel_input_ieof); @@ -1335,6 +1328,10 @@ client_init_dispatch_20(void) /* rekeying */ dispatch_set(SSH2_MSG_KEXINIT, &kex_input_kexinit); + + /* global request reply messages */ + dispatch_set(SSH2_MSG_REQUEST_FAILURE, &client_global_request_reply); + dispatch_set(SSH2_MSG_REQUEST_SUCCESS, &client_global_request_reply); } static void client_init_dispatch_13(void)