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 Mar 2011 13:34:52 +0000 (14:34 +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)
(cherry picked from commit 44a2e73cf07110e463f2262c50a377bdf17253d6)

source3/lib/events.c

index ad9dd89ff8fc2aecbd8099e876b15a414be3f69c..01ea017d676160ca40b28d6f560f83808a3ec728 100644 (file)
@@ -153,6 +153,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;
                }