projects
/
u
/
mdw
/
putty
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
If pterm's execvp fails when given the whole argument list after -e,
[u/mdw/putty]
/
ssh.c
diff --git
a/ssh.c
b/ssh.c
index
b4c634d
..
ef503bf
100644
(file)
--- a/
ssh.c
+++ b/
ssh.c
@@
-4266,13
+4266,13
@@
void sshfwd_unclean_close(struct ssh_channel *c)
if (ssh->state == SSH_STATE_CLOSED)
return;
if (ssh->state == SSH_STATE_CLOSED)
return;
- if (c->closes & CLOSES_SENT_CLOSE)
- return;
+ if (!(c->closes & CLOSES_SENT_CLOSE)) {
+ pktout = ssh2_pkt_init(SSH2_MSG_CHANNEL_CLOSE);
+ ssh2_pkt_adduint32(pktout, c->remoteid);
+ ssh2_pkt_send(ssh, pktout);
+ c->closes |= CLOSES_SENT_EOF | CLOSES_SENT_CLOSE;
+ }
- pktout = ssh2_pkt_init(SSH2_MSG_CHANNEL_CLOSE);
- ssh2_pkt_adduint32(pktout, c->remoteid);
- ssh2_pkt_send(ssh, pktout);
- c->closes |= CLOSES_SENT_EOF | CLOSES_SENT_CLOSE;
switch (c->type) {
case CHAN_X11:
x11_close(c->u.x11.s);
switch (c->type) {
case CHAN_X11:
x11_close(c->u.x11.s);
@@
-4283,6
+4283,7
@@
void sshfwd_unclean_close(struct ssh_channel *c)
break;
}
c->type = CHAN_ZOMBIE;
break;
}
c->type = CHAN_ZOMBIE;
+
ssh2_channel_check_close(c);
}
ssh2_channel_check_close(c);
}
@@
-5777,6
+5778,12
@@
static int do_ssh2_transport(Ssh ssh, void *vin, int inlen,
break;
}
}
break;
}
}
+ if (!ssh->hostkey) {
+ bombout(("Couldn't agree a host key algorithm (available: %s)",
+ str ? str : "(null)"));
+ crStop(0);
+ }
+
s->guessok = s->guessok &&
first_in_commasep_string(hostkey_algs[0]->name, str, len);
ssh_pkt_getstring(pktin, &str, &len); /* client->server cipher */
s->guessok = s->guessok &&
first_in_commasep_string(hostkey_algs[0]->name, str, len);
ssh_pkt_getstring(pktin, &str, &len); /* client->server cipher */
@@
-10036,6
+10043,12
@@
static void ssh_unthrottle(void *handle, int bufsize)
}
}
}
}
}
}
+
+ /*
+ * Now process any SSH connection data that was stashed in our
+ * queue while we were frozen.
+ */
+ ssh_process_queued_incoming_data(ssh);
}
void ssh_send_port_open(void *channel, char *hostname, int port, char *org)
}
void ssh_send_port_open(void *channel, char *hostname, int port, char *org)