From 6ccdc60d96c6d1666b495d8338846f6fdda95a64 Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Tue, 16 May 2017 18:17:23 +0000 Subject: [PATCH] lib: correctly handle EOF when using poll() Descriptor owner should handle EOF, not thread.c Signed-off-by: Quentin Young --- lib/thread.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) 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, -- 2.39.5