diff options
Diffstat (limited to 'serverloop.c')
-rw-r--r-- | serverloop.c | 5 |
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 | } |