X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=ssh.c;h=505b4ae1dcb811773d9a77d4158bfffbd7bf7715;hb=bb1d656dd4dac5594bf13717dac1e2512b311935;hp=b4c634d310c363930e7ecb5fda19358af1a107b3;hpb=49927f6c4dc619865ade72fabd0f659726bc0908;p=PuTTY.git diff --git a/ssh.c b/ssh.c index b4c634d3..505b4ae1 100644 --- 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 (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); @@ -4283,6 +4283,7 @@ void sshfwd_unclean_close(struct ssh_channel *c) break; } c->type = CHAN_ZOMBIE; + ssh2_channel_check_close(c); }