*/
#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"
}
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++;
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();
continue;
case 'C':
- process_cmdline(bin, bout, berr);
+ process_cmdline();
continue;
default:
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);
/* 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)