tevent: use DLIST_DEMOTE() before calling on fde handler after select() and poll()
authorStefan Metzmacher <metze@samba.org>
Thu, 21 Feb 2013 14:44:30 +0000 (15:44 +0100)
committerStefan Metzmacher <metze@samba.org>
Fri, 1 Mar 2013 17:51:52 +0000 (18:51 +0100)
This makes sure we don't preferr events which are at the beginning
of the list.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
lib/tevent/tevent_poll.c
lib/tevent/tevent_select.c

index aa4c50c0c5ec39651d4eea2224d2043ad325ce45..0175cae531a4d98f4b703fb9010ed79cc5fd2d30 100644 (file)
@@ -601,6 +601,7 @@ static int poll_event_loop_poll(struct tevent_context *ev,
                 */
                flags &= fde->flags;
                if (flags != 0) {
+                       DLIST_DEMOTE(ev->fd_events, fde, struct tevent_fd);
                        fde->handler(ev, fde, flags, fde->private_data);
                        return 0;
                }
index d8aeaa7c55c37bfb983775c3cd7bff3c72199543..5e265692763edc56bedf4569c22901392cc1cfdc 100644 (file)
@@ -221,6 +221,7 @@ static int select_event_loop_select(struct select_event_context *select_ev, stru
                                flags |= TEVENT_FD_WRITE;
                        }
                        if (flags) {
+                               DLIST_DEMOTE(select_ev->ev->fd_events, fde, struct tevent_fd);
                                fde->handler(select_ev->ev, fde, flags, fde->private_data);
                                break;
                        }