summaryrefslogtreecommitdiff
path: root/serverloop.c
diff options
context:
space:
mode:
Diffstat (limited to 'serverloop.c')
-rw-r--r--serverloop.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/serverloop.c b/serverloop.c
index be9edfafc..50e89aee8 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -110,7 +110,6 @@ sigchld_handler2(int sig)
110 int save_errno = errno; 110 int save_errno = errno;
111 debug("Received SIGCHLD."); 111 debug("Received SIGCHLD.");
112 child_terminated = 1; 112 child_terminated = 1;
113 child_has_selected = 0;
114 errno = save_errno; 113 errno = save_errno;
115} 114}
116 115
@@ -675,10 +674,10 @@ server_loop2(void)
675 session_close_by_pid(pid, status); 674 session_close_by_pid(pid, status);
676 child_terminated = 0; 675 child_terminated = 0;
677 signal(SIGCHLD, sigchld_handler2); 676 signal(SIGCHLD, sigchld_handler2);
677 if (used_sessions() == 0)
678 break;
678 } 679 }
679 channel_after_select(&readset, &writeset); 680 channel_after_select(&readset, &writeset);
680 if (child_terminated && child_has_selected)
681 break;
682 process_input(&readset); 681 process_input(&readset);
683 process_output(&writeset); 682 process_output(&writeset);
684 } 683 }