summaryrefslogtreecommitdiffstats
path: root/client.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 /client.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 'client.c')
-rw-r--r--client.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/client.c b/client.c
index 7959559b..a5c5e39e 100644
--- a/client.c
+++ b/client.c
@@ -185,17 +185,20 @@ client_main(void)
client_write_server(MSG_EXITING, NULL, 0);
}
if (sigchld) {
- waitpid(WAIT_ANY, NULL, WNOHANG);
sigchld = 0;
+ waitpid(WAIT_ANY, NULL, WNOHANG);
+ continue;
}
if (sigwinch) {
+ sigwinch = 0;
client_write_server(MSG_RESIZE, NULL, 0);
- sigwinch = 0;
+ continue;
}
if (sigcont) {
+ sigcont = 0;
siginit();
client_write_server(MSG_WAKEUP, NULL, 0);
- sigcont = 0;
+ continue;
}
pfd.fd = client_ibuf.fd;