diff options
author | Matt Johnston <matt@ucc.asn.au> | 2014-07-28 23:23:49 +0800 |
---|---|---|
committer | Matt Johnston <matt@ucc.asn.au> | 2014-07-28 23:23:49 +0800 |
commit | 0e7409c7ff6fc760018fce3d5e8b72247bf782b5 (patch) | |
tree | 766b9e2aa6a48f35eaafe0127bb344af66b95462 /common-channel.c | |
parent | 393ca2a290b70c715cd432309304771e075e2418 (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.c | 6 |
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) { |