summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CREDITS1
-rw-r--r--ChangeLog4
-rw-r--r--serverloop.c5
3 files changed, 9 insertions, 1 deletions
diff --git a/CREDITS b/CREDITS
index 139f61717..8831cdd5a 100644
--- a/CREDITS
+++ b/CREDITS
@@ -67,6 +67,7 @@ Pekka Savola <pekkas@netcore.fi> - Bugfixes
67Peter Kocks <peter.kocks@baygate.com> - Makefile fixes 67Peter Kocks <peter.kocks@baygate.com> - Makefile fixes
68Phil Hands <phil@hands.com> - Debian scripts, assorted patches 68Phil Hands <phil@hands.com> - Debian scripts, assorted patches
69Phil Karn <karn@ka9q.ampr.org> - Autoconf fixes 69Phil Karn <karn@ka9q.ampr.org> - Autoconf fixes
70Philippe WILLEM <Philippe.WILLEM@urssaf.fr> - Bugfixes
70Phill Camp <P.S.S.Camp@ukc.ac.uk> - login code fix 71Phill Camp <P.S.S.Camp@ukc.ac.uk> - login code fix
71Rip Loomis <loomisg@cist.saic.com> - Solaris package support, fixes 72Rip Loomis <loomisg@cist.saic.com> - Solaris package support, fixes
72SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp> - Multiple bugfixes 73SAKAI Kiyotaka <ksakai@kso.netwk.ntt-at.co.jp> - Multiple bugfixes
diff --git a/ChangeLog b/ChangeLog
index 9cfb58dd8..79f9c7bf0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
120001028
2 - (djm) fix select hack in serverloop.c from Philippe WILLEM
3 <Philippe.WILLEM@urssaf.fr>
4
120001027 520001027
2 - (djm) Increase REKEY_BYTES to 2^24 for arc4random 6 - (djm) Increase REKEY_BYTES to 2^24 for arc4random
3 7
diff --git a/serverloop.c b/serverloop.c
index d98d74c25..a9e478764 100644
--- a/serverloop.c
+++ b/serverloop.c
@@ -99,9 +99,10 @@ sigchld_handler(int sig)
99 error("Strange, got SIGCHLD and wait returned pid %d but child is %d", 99 error("Strange, got SIGCHLD and wait returned pid %d but child is %d",
100 wait_pid, child_pid); 100 wait_pid, child_pid);
101 if (WIFEXITED(child_wait_status) || 101 if (WIFEXITED(child_wait_status) ||
102 WIFSIGNALED(child_wait_status)) 102 WIFSIGNALED(child_wait_status)) {
103 child_terminated = 1; 103 child_terminated = 1;
104 child_has_selected = 0; 104 child_has_selected = 0;
105 }
105 } 106 }
106 signal(SIGCHLD, sigchld_handler); 107 signal(SIGCHLD, sigchld_handler);
107 errno = save_errno; 108 errno = save_errno;
@@ -112,6 +113,7 @@ sigchld_handler2(int sig)
112 int save_errno = errno; 113 int save_errno = errno;
113 debug("Received SIGCHLD."); 114 debug("Received SIGCHLD.");
114 child_terminated = 1; 115 child_terminated = 1;
116 child_has_selected = 0;
115 errno = save_errno; 117 errno = save_errno;
116} 118}
117 119
@@ -678,6 +680,7 @@ server_loop2(void)
678 while ((pid = waitpid(-1, &status, WNOHANG)) > 0) 680 while ((pid = waitpid(-1, &status, WNOHANG)) > 0)
679 session_close_by_pid(pid, status); 681 session_close_by_pid(pid, status);
680 child_terminated = 0; 682 child_terminated = 0;
683 child_has_selected = 0;
681 signal(SIGCHLD, sigchld_handler2); 684 signal(SIGCHLD, sigchld_handler2);
682 } 685 }
683 channel_after_select(&readset, &writeset); 686 channel_after_select(&readset, &writeset);