From c0d7c6693f579a814c50d7965f8e89fa470b2c03 Mon Sep 17 00:00:00 2001 From: Matt Johnston <matt@ucc.asn.au> Date: Wed, 10 Apr 2013 21:32:55 +0800 Subject: [PATCH] run closehandlers on cleanup --- common-channel.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/common-channel.c b/common-channel.c index 331ea60f..8b7369c0 100644 --- a/common-channel.c +++ b/common-channel.c @@ -561,7 +561,11 @@ static void remove_channel(struct Channel * channel) { TRACE(("CLOSE errfd %d", channel->errfd)) close(channel->errfd); - channel->typedata = NULL; + if (!channel->close_handler_done + && channel->type->closehandler) { + channel->type->closehandler(channel); + channel->close_handler_done = 1; + } ses.channels[channel->index] = NULL; m_free(channel); @@ -625,7 +629,7 @@ static void send_msg_channel_data(struct Channel *channel, int isextended) { * exttype if is extended */ maxlen = MIN(maxlen, ses.writepayload->size - 1 - 4 - 4 - (isextended ? 4 : 0)); - TRACE(("maxlen %d", maxlen)) + TRACE(("maxlen %zd", maxlen)) if (maxlen == 0) { TRACE(("leave send_msg_channel_data: no window")) return; -- GitLab