From: Azat Khuzhin Date: Wed, 8 Apr 2020 23:16:15 +0000 (+0300) Subject: Avoid triggering wrong events with EV_ET set X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9543f31a1a6cc2f919f57bfc2fd55068262a3f27;p=libevent Avoid triggering wrong events with EV_ET set For the event at least something except EV_ET should be set, so checking ev->ev_events with "triggered" events is wrong, because EV_ET is always passed (see epoll), since it will be filtered out if it is not set in event. --- diff --git a/evmap.c b/evmap.c index ffc991f5..e4e35c68 100644 --- a/evmap.c +++ b/evmap.c @@ -432,7 +432,7 @@ evmap_io_active_(struct event_base *base, evutil_socket_t fd, short events) if (NULL == ctx) return; LIST_FOREACH(ev, &ctx->events, ev_io_next) { - if (ev->ev_events & events) + if (ev->ev_events & (events & ~EV_ET)) event_active_nolock_(ev, ev->ev_events & events, 1); } }