diff --git a/src/ev_epoll.c b/src/ev_epoll.c index eb2bceb03..a2e5e0a60 100644 --- a/src/ev_epoll.c +++ b/src/ev_epoll.c @@ -160,10 +160,10 @@ REGPRM2 static void _do_poll(struct poller *p, int exp) } fdtab[fd].ev |= n; - if (n & (FD_POLL_IN | FD_POLL_HUP | FD_POLL_ERR)) + if (fdtab[fd].ev & (FD_POLL_IN | FD_POLL_HUP | FD_POLL_ERR)) fd_may_recv(fd); - if (n & (FD_POLL_OUT | FD_POLL_ERR)) + if (fdtab[fd].ev & (FD_POLL_OUT | FD_POLL_ERR)) fd_may_send(fd); } /* the caller will take care of cached events */