static void ssh_set_frozen(Ssh ssh, int frozen)
{
- sk_set_frozen(ssh->s, frozen);
+ if (ssh->s)
+ sk_set_frozen(ssh->s, frozen);
ssh->frozen = frozen;
}
error_msg = "Server unexpectedly closed network connection";
}
+ if (need_notify)
+ notify_remote_exit(ssh->frontend);
+
if (error_msg) {
/* A socket error has occurred. */
logevent(error_msg);
} else {
logevent("Server closed network connection");
}
- if (need_notify)
- notify_remote_exit(ssh->frontend);
return 0;
}
if (s->dlgret == 0) {
ssh->close_expected = TRUE;
ssh_closing((Plug)ssh, NULL, 0, 0);
+ crStop(0);
}
}
if (s->dlgret == 0) {
ssh->close_expected = TRUE;
ssh_closing((Plug)ssh, NULL, 0, 0);
+ crStop(0);
}
}
}
strcpy(saddr, sports);
n = 0;
}
- if (n < 255) sports[n++] = *portfwd_strptr++;
+ if (n < lenof(sports)-1) sports[n++] = *portfwd_strptr++;
}
sports[n] = 0;
if (type != 'D') {
portfwd_strptr++;
n = 0;
while (*portfwd_strptr && *portfwd_strptr != ':') {
- if (n < 255) host[n++] = *portfwd_strptr++;
+ if (n < lenof(host)-1) host[n++] = *portfwd_strptr++;
}
host[n] = 0;
if (*portfwd_strptr == ':')
portfwd_strptr++;
n = 0;
while (*portfwd_strptr) {
- if (n < 255) dports[n++] = *portfwd_strptr++;
+ if (n < lenof(dports)-1) dports[n++] = *portfwd_strptr++;
}
dports[n] = 0;
portfwd_strptr++;
*/
{
char *cmd = ssh->cfg.remote_cmd_ptr;
+
+ if (!cmd) cmd = ssh->cfg.remote_cmd;
if (ssh->cfg.ssh_subsys && ssh->cfg.remote_cmd_ptr2) {
cmd = ssh->cfg.remote_cmd_ptr2;
if (s->dlgret == 0) {
ssh->close_expected = TRUE;
ssh_closing((Plug)ssh, NULL, 0, 0);
+ crStop(0);
}
}
if (s->dlgret == 0) {
ssh->close_expected = TRUE;
ssh_closing((Plug)ssh, NULL, 0, 0);
+ crStop(0);
}
}
if (s->dlgret == 0) {
ssh->close_expected = TRUE;
ssh_closing((Plug)ssh, NULL, 0, 0);
+ crStop(0);
}
}
} else {
subsys = ssh->cfg.ssh_subsys;
cmd = ssh->cfg.remote_cmd_ptr;
+ if (!cmd) cmd = ssh->cfg.remote_cmd;
}
s->pktout = ssh2_pkt_init(SSH2_MSG_CHANNEL_REQUEST);