From: Willy Tarreau Date: Mon, 9 Apr 2007 15:16:07 +0000 (+0200) Subject: [MEDIUM] kqueue: do not manually remove fds X-Git-Tag: v1.3.9~16 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8755285486cb2fce86836e260ec834f8bb41f144;p=thirdparty%2Fhaproxy.git [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. --- 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 */