*/
#include "includes.h"
-RCSID("$OpenBSD: clientloop.c,v 1.98 2002/03/21 16:58:13 markus Exp $");
+RCSID("$OpenBSD: clientloop.c,v 1.99 2002/03/21 23:07:37 markus Exp $");
#include "ssh.h"
#include "ssh1.h"
}
static void
-process_cmdline(Buffer *bin, Buffer *bout, Buffer *berr)
+process_cmdline(void)
{
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: