From d0d844c1a4bdb07b69ea699b56cdafb50afcb531 Mon Sep 17 00:00:00 2001 From: simon Date: Sun, 15 Sep 2002 13:31:11 +0000 Subject: [PATCH] Be proactively pedantic about channel-close irregularities: we no longer just sit there like a lemon if we can't find the channel in question, we bomb out and complain. With any luck, remaining problems of this type should be easier to catch under this policy. git-svn-id: svn://svn.tartarus.org/sgt/putty@1962 cda61777-01e9-0310-a592-d414129be87e --- ssh.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/ssh.c b/ssh.c index a23ead91..3cc76be7 100644 --- a/ssh.c +++ b/ssh.c @@ -3354,7 +3354,7 @@ static void ssh1_protocol(unsigned char *in, int inlen, int ispkt) unsigned i = GET_32BIT(pktin.body); struct ssh_channel *c; c = find234(ssh_channels, &i, ssh_channelfind); - if (c) { + if (c && ((int)c->remoteid) != -1) { int closetype; closetype = (pktin.type == SSH1_MSG_CHANNEL_CLOSE ? 1 : 2); @@ -3383,6 +3383,11 @@ static void ssh1_protocol(unsigned char *in, int inlen, int ispkt) del234(ssh_channels, c); sfree(c); } + } else { + bombout(("Received CHANNEL_CLOSE%s for %s channel %d\n", + pktin.type == SSH1_MSG_CHANNEL_CLOSE ? "" : + "_CONFIRMATION", c ? "half-open" : "nonexistent", + i)); } } else if (pktin.type == SSH1_MSG_CHANNEL_DATA) { /* Data sent down one of our channels. */ @@ -5359,8 +5364,10 @@ static void do_ssh2_authconn(unsigned char *in, int inlen, int ispkt) struct ssh_channel *c; c = find234(ssh_channels, &i, ssh_channelfind); - if (!c) - continue; /* nonexistent channel */ + if (!c || ((int)c->remoteid) == -1) { + bombout(("Received CHANNEL_CLOSE for %s channel %d\n", + c ? "half-open" : "nonexistent", i)); + } /* Do pre-close processing on the channel. */ switch (c->type) { case CHAN_MAINSESSION: -- 2.11.0