s3:lib/events: use DLIST_DEMOTE() for fd events
authorStefan Metzmacher <metze@samba.org>
Mon, 24 Jan 2011 07:47:12 +0000 (08:47 +0100)
committerKarolin Seeger <kseeger@samba.org>
Sat, 5 Feb 2011 17:48:45 +0000 (18:48 +0100)
This makes sure that fd events doesn't dry out,
because a fd with a lower number is busy.

metze

The last 3 patches address bug #7942 (inotify can somehow cause endless loops in
with select()).

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Mon Jan 31 16:59:44 CET 2011 on sn-devel-104
(cherry picked from commit ad10289ebcc78ab62ec86abb29f81eb769d17f4e)
(cherry picked from commit 3d2f72844a221dbdfe94fbf6e2b45c98ee158a9b)

source3/lib/events.c

index 6281f3385a6e842702a32c5838ad44b2081e74bd..c529038b50b255887cabbbbfcb295d6c6493bffa 100644 (file)
@@ -145,6 +145,7 @@ bool run_events(struct tevent_context *ev,
                if (FD_ISSET(fde->fd, write_fds)) flags |= EVENT_FD_WRITE;
 
                if (flags & fde->flags) {
+                       DLIST_DEMOTE(ev->fd_events, fde, struct tevent_fd *);
                        fde->handler(ev, fde, flags, fde->private_data);
                        return true;
                }