X-Git-Url: https://git.distorted.org.uk/u/mdw/putty/blobdiff_plain/1bfc7e93f23e1632da45ab5a272b7f6ddcf2efaf..51e9d3c00a3471f284e89ec1f59f38ca25f10c5f:/ssh.c diff --git a/ssh.c b/ssh.c index 72c7c2f9..b5f34a52 100644 --- a/ssh.c +++ b/ssh.c @@ -256,18 +256,6 @@ static char *ssh2_pkt_type(int pkt_ctx, int type) #undef translate #undef translatec -#define GET_32BIT(cp) \ - (((unsigned long)(unsigned char)(cp)[0] << 24) | \ - ((unsigned long)(unsigned char)(cp)[1] << 16) | \ - ((unsigned long)(unsigned char)(cp)[2] << 8) | \ - ((unsigned long)(unsigned char)(cp)[3])) - -#define PUT_32BIT(cp, value) { \ - (cp)[0] = (unsigned char)((value) >> 24); \ - (cp)[1] = (unsigned char)((value) >> 16); \ - (cp)[2] = (unsigned char)((value) >> 8); \ - (cp)[3] = (unsigned char)(value); } - /* Enumeration values for fields in SSH-1 packets */ enum { PKT_END, PKT_INT, PKT_CHAR, PKT_DATA, PKT_STR, PKT_BIGNUM, @@ -2444,6 +2432,7 @@ static int ssh_do_close(Ssh ssh, int notify_exit) struct ssh_channel *c; ssh->state = SSH_STATE_CLOSED; + expire_timer_context(ssh); if (ssh->s) { sk_close(ssh->s); ssh->s = NULL; @@ -7571,6 +7560,9 @@ static void ssh2_timer(void *ctx, long now) { Ssh ssh = (Ssh)ctx; + if (ssh->state == SSH_STATE_CLOSED) + return; + if (!ssh->kex_in_progress && ssh->cfg.ssh_rekey_time != 0 && now - ssh->next_rekey >= 0) { do_ssh2_transport(ssh, "timeout", -1, NULL); @@ -8055,6 +8047,7 @@ static void ssh_special(void *handle, Telnet_Special code) struct Packet *pktout = ssh2_pkt_init(SSH2_MSG_CHANNEL_EOF); ssh2_pkt_adduint32(pktout, ssh->mainchan->remoteid); ssh2_pkt_send(ssh, pktout); + ssh->send_ok = 0; /* now stop trying to read from stdin */ } logevent("Sent EOF message"); } else if (code == TS_PING || code == TS_NOP) {