summaryrefslogtreecommitdiffstats
path: root/src/eloop.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/eloop.c')
-rw-r--r--src/eloop.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/eloop.c b/src/eloop.c
index ab8d289c..32042c54 100644
--- a/src/eloop.c
+++ b/src/eloop.c
@@ -377,13 +377,12 @@ eloop_event_add(struct eloop *eloop, int fd, unsigned short events,
#elif defined(HAVE_EPOLL)
memset(&epe, 0, sizeof(epe));
epe.data.ptr = e;
- if (e->events & ELE_READ)
+ if (events & ELE_READ)
epe.events |= EPOLLIN;
- if (e->events & ELE_WRITE)
+ if (events & ELE_WRITE)
epe.events |= EPOLLOUT;
-
op = added ? EPOLL_CTL_ADD : EPOLL_CTL_MOD;
- if (epoll_ctl(eloop->fd, op, fd, &epe) == -1) {
+ if (epe.events != 0 && epoll_ctl(eloop->fd, op, fd, &epe) == -1) {
if (added) {
TAILQ_REMOVE(&eloop->events, e, next);
TAILQ_INSERT_TAIL(&eloop->free_events, e, next);
@@ -689,9 +688,9 @@ eloop_forked(struct eloop *eloop)
#elif defined(HAVE_EPOLL)
memset(&epe, 0, sizeof(epe));
epe.data.ptr = e;
- if (e->read_cb != NULL)
+ if (e->events & ELE_READ)
epe.events |= EPOLLIN;
- if (e->write_cb != NULL)
+ if (e->events & ELE_WRITE)
epe.events |= EPOLLOUT;
if (epoll_ctl(eloop->fd, EPOLL_CTL_ADD, e->fd, &epe) == -1)
return -1;