]> 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:06:34 +0000 (17:06 +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 c41ea2f07707d24eec57305850da3f17f8767c58..9cf84edd88db5b3a7d08ed303ffccfebf9d9abc1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,8 @@
        --- 9.10.4-P5 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 6127ec5f30b2f85e4a15f045644af41333f8e0d2..313664996eb0e088f290d0a05c50273efa1b8e19 100644 (file)
@@ -4075,7 +4075,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,