[PATCH] tevent: Only call handlers that ask for events

Volker Lendecke vl at samba.org
Wed Oct 6 10:47:08 MDT 2010


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
uncontionally call the write handler even if the socket is only readable. We
should have called the read handler instead.
---
 lib/tevent/tevent_standard.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/lib/tevent/tevent_standard.c b/lib/tevent/tevent_standard.c
index 1c8ed0e..a68a03c 100644
--- a/lib/tevent/tevent_standard.c
+++ b/lib/tevent/tevent_standard.c
@@ -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;
 			}
-- 
1.7.0.4


--X1bOJ3K7DJ5YkBrT--


More information about the samba-technical mailing list