From 87dbe24a4f5776cb81d328034107a3ef97a2ada6 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Thu, 8 Dec 2016 16:59:46 +1100 Subject: [PATCH] 4528. [bug] Only set the flag bits for the i/o we are waiting for on EPOLLERR or EPOLLHUP. [RT #43617] (cherry picked from commit c1619b84207912ff32eeb27324475089a33b8b1d) --- CHANGES | 3 +++ lib/isc/unix/socket.c | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 841fe3c13f..fca251a94a 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +4528. [bug] Only set the flag bits for the i/o we are waiting + for on EPOLLERR or EPOLLHUP. [RT #43617] + 4527. [doc] Support DocBook XSL Stylesheets v1.79.1. [RT #43831] 4526. [doc] Corrected errors and improved formatting of diff --git a/lib/isc/unix/socket.c b/lib/isc/unix/socket.c index 15900dc0bf..f24e280779 100644 --- a/lib/isc/unix/socket.c +++ b/lib/isc/unix/socket.c @@ -3774,7 +3774,8 @@ process_fds(isc__socketmgr_t *manager, struct epoll_event *events, int nevents) * events. Note also that the read or write attempt * won't block because we use non-blocking sockets. */ - events[i].events |= (EPOLLIN | EPOLLOUT); + int fd = events[i].data.fd; + events[i].events |= manager->epoll_events[fd]; } process_fd(manager, events[i].data.fd, (events[i].events & EPOLLIN) != 0,