From: Quentin Young Date: Tue, 16 May 2017 18:17:23 +0000 (+0000) Subject: lib: correctly handle EOF when using poll() X-Git-Tag: reindent-master-before~154^2 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=refs%2Fpull%2F549%2Fhead;p=mirror%2Ffrr.git lib: correctly handle EOF when using poll() Descriptor owner should handle EOF, not thread.c Signed-off-by: Quentin Young --- diff --git a/lib/thread.c b/lib/thread.c index aef9ac5cf9..6de4d24bfa 100644 --- a/lib/thread.c +++ b/lib/thread.c @@ -1211,14 +1211,13 @@ check_pollfds(struct thread_master *m, fd_set *readfd, int num) ready++; /* POLLIN / POLLOUT process event */ - if (m->handler.pfds[i].revents & POLLIN) + if (m->handler.pfds[i].revents & (POLLIN | POLLHUP)) thread_process_fds_helper(m, m->read[m->handler.pfds[i].fd], NULL, POLLIN, i); if (m->handler.pfds[i].revents & POLLOUT) thread_process_fds_helper(m, m->write[m->handler.pfds[i].fd], NULL, POLLOUT, i); /* remove fd from list on POLLNVAL */ - if (m->handler.pfds[i].revents & POLLNVAL || - m->handler.pfds[i].revents & POLLHUP) + if (m->handler.pfds[i].revents & POLLNVAL) { memmove(m->handler.pfds+i, m->handler.pfds+i+1,