From 72d8749454820cf025f05a8ab9cc1cff4c8c5b6e Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Sat, 8 Feb 2020 17:04:25 -0500 Subject: 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. --- chat.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'chat.c') 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(); } -- cgit 1.4.1