From 22b2a449105d7604f715c1afafeb4fe5ac473f1b Mon Sep 17 00:00:00 2001 From: root Date: Sun, 4 Nov 2007 23:14:11 +0000 Subject: - have to re-check potentially closed fds regularly for epoll. this hurts badly :( - still more than twice as fats as libevent. - many minor fixes --- ev_epoll.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'ev_epoll.c') diff --git a/ev_epoll.c b/ev_epoll.c index ffb1f05..4689f8d 100644 --- a/ev_epoll.c +++ b/ev_epoll.c @@ -43,7 +43,9 @@ epoll_modify (EV_P_ int fd, int oev, int nev) | (nev & EV_WRITE ? EPOLLOUT : 0); if (epoll_ctl (epoll_fd, mode, fd, &ev)) - fd_kill (EV_A_ fd); + if (errno != ENOENT /* on ENOENT the fd went away, so try to do the right thing */ + || (nev && epoll_ctl (epoll_fd, EPOLL_CTL_ADD, fd, &ev))) + fd_kill (EV_A_ fd); } static void -- cgit v1.2.3