From 8755285486cb2fce86836e260ec834f8bb41f144 Mon Sep 17 00:00:00 2001 From: Willy Tarreau Date: Mon, 9 Apr 2007 17:16:07 +0200 Subject: [PATCH] [MEDIUM] kqueue: do not manually remove fds FDs attached to a kevent are automatically removed after close(). Also, do not mark the FDs as EV_CLEAR. We want to stay informed about readiness. --- src/ev_kqueue.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/ev_kqueue.c b/src/ev_kqueue.c index 4f9d6840d1..3958343113 100644 --- a/src/ev_kqueue.c +++ b/src/ev_kqueue.c @@ -65,7 +65,7 @@ REGPRM2 static int __fd_set(const int fd, int dir) return 0; FD_SET(fd, fd_evts[dir]); - EV_SET(kev, fd, dir2filt[dir], EV_ADD|EV_CLEAR, 0, 0, NULL); + EV_SET(kev, fd, dir2filt[dir], EV_ADD, 0, 0, NULL); kevent(kqueue_fd, kev, 1, NULL, 0, NULL); return 1; } @@ -89,6 +89,12 @@ REGPRM1 static void __fd_rem(int fd) kevent(kqueue_fd, kev, changes, NULL, 0, NULL); } +REGPRM1 static void __fd_clo(int fd) +{ + FD_CLR(fd, fd_evts[DIR_RD]); + FD_CLR(fd, fd_evts[DIR_WR]); +} + /* * kqueue() poller */