- (djm) fix select hack in serverloop.c from Philippe WILLEM

<Philippe.WILLEM@urssaf.fr>
This commit is contained in:
Damien Miller 2000-10-28 13:30:55 +11:00
parent e95b52e90b
commit 6bd90df490
3 changed files with 9 additions and 1 deletions

View File

@ -67,6 +67,7 @@ Pekka Savola <pekkas@netcore.fi> - Bugfixes
Peter Kocks <peter.kocks@baygate.com> - Makefile fixes Peter Kocks <peter.kocks@baygate.com> - Makefile fixes
Phil Hands <phil@hands.com> - Debian scripts, assorted patches Phil Hands <phil@hands.com> - Debian scripts, assorted patches
Phil Karn <karn@ka9q.ampr.org> - Autoconf fixes 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 Phill Camp <P.S.S.Camp@ukc.ac.uk> - login code fix
Rip Loomis <loomisg@cist.saic.com> - Solaris package support, fixes Rip Loomis <loomisg@cist.saic.com> - Solaris package support, fixes
SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp> - Multiple bugfixes SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp> - Multiple bugfixes

View File

@ -1,3 +1,7 @@
20001028
- (djm) fix select hack in serverloop.c from Philippe WILLEM
<Philippe.WILLEM@urssaf.fr>
20001027 20001027
- (djm) Increase REKEY_BYTES to 2^24 for arc4random - (djm) Increase REKEY_BYTES to 2^24 for arc4random

View File

@ -99,9 +99,10 @@ sigchld_handler(int sig)
error("Strange, got SIGCHLD and wait returned pid %d but child is %d", error("Strange, got SIGCHLD and wait returned pid %d but child is %d",
wait_pid, child_pid); wait_pid, child_pid);
if (WIFEXITED(child_wait_status) || if (WIFEXITED(child_wait_status) ||
WIFSIGNALED(child_wait_status)) WIFSIGNALED(child_wait_status)) {
child_terminated = 1; child_terminated = 1;
child_has_selected = 0; child_has_selected = 0;
}
} }
signal(SIGCHLD, sigchld_handler); signal(SIGCHLD, sigchld_handler);
errno = save_errno; errno = save_errno;
@ -112,6 +113,7 @@ sigchld_handler2(int sig)
int save_errno = errno; int save_errno = errno;
debug("Received SIGCHLD."); debug("Received SIGCHLD.");
child_terminated = 1; child_terminated = 1;
child_has_selected = 0;
errno = save_errno; errno = save_errno;
} }
@ -678,6 +680,7 @@ server_loop2(void)
while ((pid = waitpid(-1, &status, WNOHANG)) > 0) while ((pid = waitpid(-1, &status, WNOHANG)) > 0)
session_close_by_pid(pid, status); session_close_by_pid(pid, status);
child_terminated = 0; child_terminated = 0;
child_has_selected = 0;
signal(SIGCHLD, sigchld_handler2); signal(SIGCHLD, sigchld_handler2);
} }
channel_after_select(&readset, &writeset); channel_after_select(&readset, &writeset);