- (djm) fix select hack in serverloop.c from Philippe WILLEM
<Philippe.WILLEM@urssaf.fr>
diff --git a/serverloop.c b/serverloop.c
index d98d74c..a9e4787 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -99,9 +99,10 @@
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 @@
int save_errno = errno;
debug("Received SIGCHLD.");
child_terminated = 1;
+ child_has_selected = 0;
errno = save_errno;
}
@@ -678,6 +680,7 @@
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);