diff options
author | Nicholas Marriott <nicm@openbsd.org> | 2009-10-26 21:38:18 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@openbsd.org> | 2009-10-26 21:38:18 +0000 |
commit | a8b1379ccbfbe7f1d7732147c4969bb92499555d (patch) | |
tree | 17a3c083aa823e3e13de493a4017cff9da3b65a8 /client.c | |
parent | 6b804f3a4aaffc26d419b3ad7f96bd54456cdfc5 (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.c | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -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; |