diff options
author | June McEnroe <june@causal.agency> | 2020-02-08 17:04:25 -0500 |
---|---|---|
committer | June McEnroe <june@causal.agency> | 2020-02-08 17:04:25 -0500 |
commit | 72d8749454820cf025f05a8ab9cc1cff4c8c5b6e (patch) | |
tree | b1f3ee70d3008abe6fe0cb9cc4a149a9a4f3fe63 | |
parent | Simplify(?) reflow buffer loop (diff) | |
download | catgirl-72d8749454820cf025f05a8ab9cc1cff4c8c5b6e.tar.gz catgirl-72d8749454820cf025f05a8ab9cc1cff4c8c5b6e.zip |
Check signals after file descriptors
If a signal happens while processing an FD, it should be handled immediately, rather than waiting for another poll return.
-rw-r--r-- | chat.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/chat.c b/chat.c index 91da6e3..b3e6825 100644 --- a/chat.c +++ b/chat.c @@ -150,6 +150,8 @@ int main(int argc, char *argv[]) { while (!self.quit) { int nfds = poll(fds, 2, -1); if (nfds < 0 && errno != EINTR) err(EX_IOERR, "poll"); + if (nfds > 0 && fds[0].revents) uiRead(); + if (nfds > 0 && fds[1].revents) ircRecv(); if (signals[SIGHUP]) self.quit = "zzz"; if (signals[SIGINT] || signals[SIGTERM]) break; @@ -162,8 +164,6 @@ int main(int argc, char *argv[]) { uiRead(); } - if (nfds > 0 && fds[0].revents) uiRead(); - if (nfds > 0 && fds[1].revents) ircRecv(); uiDraw(); } |