diff --git a/src/liblwevent/350_fdparams.c b/src/liblwevent/350_fdparams.c index 5baa73c..c55f750 100644 --- a/src/liblwevent/350_fdparams.c +++ b/src/liblwevent/350_fdparams.c @@ -56,7 +56,11 @@ int lwevent_set_events(struct lwevent* ev, int events) /* try the modification */ ee.events = events; ee.data.ptr = ev; - if(TEMP_FAILURE_RETRY( epoll_ctl(lwevent_epoll_fd, EPOLL_CTL_MOD, ev->fd, &ee) )) return -1; + if(TEMP_FAILURE_RETRY( epoll_ctl(lwevent_epoll_fd, EPOLL_CTL_MOD, ev->fd, &ee) )) { + /* if we are deactivated, ENOENT will be returned, but we still want to store the events + * for later, so they will be used when reactivation occurs. */ + if(errno != ENOENT) return -1; + } /* update structure only if it succeeded */ ev->events = events;