summaryrefslogtreecommitdiffhomepage
path: root/common-channel.c
diff options
context:
space:
mode:
authorMatt Johnston <matt@ucc.asn.au>2014-07-28 23:23:49 +0800
committerMatt Johnston <matt@ucc.asn.au>2014-07-28 23:23:49 +0800
commit0e7409c7ff6fc760018fce3d5e8b72247bf782b5 (patch)
tree766b9e2aa6a48f35eaafe0127bb344af66b95462 /common-channel.c
parent393ca2a290b70c715cd432309304771e075e2418 (diff)
Make sure the check_close() handler runs when a server child process exits
Diffstat (limited to 'common-channel.c')
-rw-r--r--common-channel.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/common-channel.c b/common-channel.c
index 967c937..63a42fb 100644
--- a/common-channel.c
+++ b/common-channel.c
@@ -258,6 +258,12 @@ void channelio(fd_set *readfds, fd_set *writefds) {
writechannel(channel, channel->errfd, channel->extrabuf);
do_check_close = 1;
}
+
+ if (ses.channel_signal_pending) {
+ /* SIGCHLD can change channel state for server sessions */
+ do_check_close = 1;
+ ses.channel_signal_pending = 0;
+ }
/* handle any channel closing etc */
if (do_check_close) {