diff common-channel.c @ 955:36eacc322e00

Make sure the check_close() handler runs when a server child process exits
author Matt Johnston <matt@ucc.asn.au>
date Mon, 28 Jul 2014 23:23:49 +0800
parents 2e402a09e21e
children 0bb16232e7c4
line wrap: on
line diff
--- a/common-channel.c	Mon Jul 28 22:59:16 2014 +0800
+++ b/common-channel.c	Mon Jul 28 23:23:49 2014 +0800
@@ -258,6 +258,12 @@
 			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) {