diff --git a/common-channel.c b/common-channel.c
index abe59419cdef764d1086df4125fc52f707bf9f6a..b846f2858ce43a2c85fd76cb8c4f32d27f655ed5 100644
--- a/common-channel.c
+++ b/common-channel.c
@@ -256,7 +256,6 @@ void channelio(fd_set *readfds, fd_set *writefds) {
 		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 */
@@ -265,6 +264,8 @@ void channelio(fd_set *readfds, fd_set *writefds) {
 		}
 	}
 
+	ses.channel_signal_pending = 0;
+
 #ifdef USING_LISTENERS
 	handle_listeners(readfds);
 #endif