]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4528. [bug] Only set the flag bits for the i/o we are waiting
authorMark Andrews <marka@isc.org>
Thu, 8 Dec 2016 05:59:46 +0000 (16:59 +1100)
committerMark Andrews <marka@isc.org>
Thu, 8 Dec 2016 06:05:29 +0000 (17:05 +1100)
                        for on EPOLLERR or EPOLLHUP. [RT #43617]

(cherry picked from commit c1619b84207912ff32eeb27324475089a33b8b1d)

CHANGES
lib/isc/unix/socket.c

diff --git a/CHANGES b/CHANGES
index 15613f67e52aa2da2f5070a79eaeddd4a1ebf531..b95624af09d46f286873bb56f7e6cecc61394ed1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,8 @@
        --- 9.11.0-P2 released ---
 
+4528.  [bug]           Only set the flag bits for the i/o we are waiting
+                       for on EPOLLERR or EPOLLHUP. [RT #43617]
+
 4517.  [security]      Named could mishandle authority sections that were
                        missing RRSIGs triggering an assertion failure.
                        (CVE-2016-9444) [RT # 43632]
index 3f32161a2dc985a63fa847ac8a5de3d53eea5003..76ca715c09e636d95629b05f348d3bba343ea65e 100644 (file)
@@ -4108,7 +4108,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,