diff options
author | Damien Miller <djm@mindrot.org> | 2000-10-28 13:30:55 +1100 |
---|---|---|
committer | Damien Miller <djm@mindrot.org> | 2000-10-28 13:30:55 +1100 |
commit | 6bd90df4909b90143093536254fce86342f63eaa (patch) | |
tree | dc78abb0a467a16012d9acd1f561e879ecafe9be | |
parent | e95b52e90bc1c3b411c9ce309cbc6291c8ec77ad (diff) |
- (djm) fix select hack in serverloop.c from Philippe WILLEM
<Philippe.WILLEM@urssaf.fr>
-rw-r--r-- | CREDITS | 1 | ||||
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | serverloop.c | 5 |
3 files changed, 9 insertions, 1 deletions
@@ -67,6 +67,7 @@ Pekka Savola <pekkas@netcore.fi> - Bugfixes Peter Kocks <peter.kocks@baygate.com> - Makefile fixes Phil Hands <phil@hands.com> - Debian scripts, assorted patches Phil Karn <karn@ka9q.ampr.org> - Autoconf fixes +Philippe WILLEM <Philippe.WILLEM@urssaf.fr> - Bugfixes Phill Camp <P.S.S.Camp@ukc.ac.uk> - login code fix Rip Loomis <loomisg@cist.saic.com> - Solaris package support, fixes SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp> - Multiple bugfixes @@ -1,3 +1,7 @@ +20001028 + - (djm) fix select hack in serverloop.c from Philippe WILLEM + <Philippe.WILLEM@urssaf.fr> + 20001027 - (djm) Increase REKEY_BYTES to 2^24 for arc4random diff --git a/serverloop.c b/serverloop.c index d98d74c2..a9e47876 100644 --- a/serverloop.c +++ b/serverloop.c @@ -99,9 +99,10 @@ sigchld_handler(int sig) error("Strange, got SIGCHLD and wait returned pid %d but child is %d", wait_pid, child_pid); if (WIFEXITED(child_wait_status) || - WIFSIGNALED(child_wait_status)) + WIFSIGNALED(child_wait_status)) { child_terminated = 1; child_has_selected = 0; + } } signal(SIGCHLD, sigchld_handler); errno = save_errno; @@ -112,6 +113,7 @@ sigchld_handler2(int sig) int save_errno = errno; debug("Received SIGCHLD."); child_terminated = 1; + child_has_selected = 0; errno = save_errno; } @@ -678,6 +680,7 @@ server_loop2(void) while ((pid = waitpid(-1, &status, WNOHANG)) > 0) session_close_by_pid(pid, status); child_terminated = 0; + child_has_selected = 0; signal(SIGCHLD, sigchld_handler2); } channel_after_select(&readset, &writeset); |