summaryrefslogtreecommitdiffstats
path: root/server.c
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@openbsd.org>2009-10-26 21:38:18 +0000
committerNicholas Marriott <nicm@openbsd.org>2009-10-26 21:38:18 +0000
commita8b1379ccbfbe7f1d7732147c4969bb92499555d (patch)
tree17a3c083aa823e3e13de493a4017cff9da3b65a8 /server.c
parent6b804f3a4aaffc26d419b3ad7f96bd54456cdfc5 (diff)
Clear signal flags /before/ taking action and continue afterwards to reduce
chance of dropping signals. Pointed out by deraadt@.
Diffstat (limited to 'server.c')
-rw-r--r--server.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/server.c b/server.c
index e1ec4eb8..78c5af94 100644
--- a/server.c
+++ b/server.c
@@ -328,15 +328,17 @@ server_main(int srv_fd)
/* Handle child exit. */
if (sigchld) {
- server_child_signal();
sigchld = 0;
+ server_child_signal();
+ continue;
}
/* Recreate socket on SIGUSR1. */
if (sigusr1) {
+ sigusr1 = 0;
close(srv_fd);
srv_fd = server_create_socket();
- sigusr1 = 0;
+ continue;
}
/* Initialise pollfd array and add server socket. */