select e_fds
authorStefan Metzmacher <metze@samba.org>
Thu, 28 Feb 2013 12:48:06 +0000 (13:48 +0100)
committerStefan Metzmacher <metze@samba.org>
Tue, 4 Oct 2016 12:52:13 +0000 (14:52 +0200)
lib/tevent/tevent_select.c

index 55dd0b66f66c52eb8fea3e3ed78e973ca643c6bb..9dfe703793233de4d5bdcabc80bfae782176800c 100644 (file)
@@ -139,7 +139,7 @@ static struct tevent_fd *select_event_add_fd(struct tevent_context *ev, TALLOC_C
 */
 static int select_event_loop_select(struct select_event_context *select_ev, struct timeval *tvalp)
 {
-       fd_set r_fds, w_fds;
+       fd_set r_fds, w_fds, e_fds;
        struct tevent_fd *fde;
        int selrtn;
        int select_errno;
@@ -151,6 +151,7 @@ static int select_event_loop_select(struct select_event_context *select_ev, stru
 
        FD_ZERO(&r_fds);
        FD_ZERO(&w_fds);
+       FD_ZERO(&e_fds);
 
        /* setup any fd events */
        for (fde = select_ev->ev->fd_events; fde; fde = fde->next) {
@@ -165,6 +166,7 @@ static int select_event_loop_select(struct select_event_context *select_ev, stru
 
                if (fde->flags & TEVENT_FD_READ) {
                        FD_SET(fde->fd, &r_fds);
+                       FD_SET(fde->fd, &e_fds);
                }
                if (fde->flags & TEVENT_FD_WRITE) {
                        FD_SET(fde->fd, &w_fds);
@@ -177,7 +179,7 @@ static int select_event_loop_select(struct select_event_context *select_ev, stru
        }
 
        tevent_trace_point_callback(select_ev->ev, TEVENT_TRACE_BEFORE_WAIT);
-       selrtn = select(select_ev->maxfd+1, &r_fds, &w_fds, NULL, tvalp);
+       selrtn = select(select_ev->maxfd+1, &r_fds, &w_fds, &e_fds, tvalp);
        select_errno = errno;
        tevent_trace_point_callback(select_ev->ev, TEVENT_TRACE_AFTER_WAIT);