tevent: Only call handlers that ask for events
authorVolker Lendecke <vl@samba.org>
Wed, 6 Oct 2010 16:47:08 +0000 (18:47 +0200)
committerJeremy Allison <jra@samba.org>
Wed, 6 Oct 2010 23:40:24 +0000 (23:40 +0000)
The s3 libsmbclient puts two different handlers on a single fd for readability
and writability. With select this works fine, however without this patch we
unconditionally call the write handler even if the socket is only readable. We
should have called the read handler instead.

Autobuild-User: Jeremy Allison <jra@samba.org>
Autobuild-Date: Wed Oct  6 23:40:24 UTC 2010 on sn-devel-104

lib/tevent/tevent_standard.c

index 1c8ed0e6ac356351e69f96c0e3e086c77ef2025e..a68a03c2acb8ef080c2cd421d06a3ea72f04159f 100644 (file)
@@ -505,7 +505,7 @@ static int std_event_loop_select(struct std_event_context *std_ev, struct timeva
 
                        if (FD_ISSET(fde->fd, &r_fds)) flags |= TEVENT_FD_READ;
                        if (FD_ISSET(fde->fd, &w_fds)) flags |= TEVENT_FD_WRITE;
-                       if (flags) {
+                       if (flags & fde->flags) {
                                fde->handler(std_ev->ev, fde, flags, fde->private_data);
                                break;
                        }