From c415b9fed4fbecd2fb0709fa0c0c783102f60e01 Mon Sep 17 00:00:00 2001 From: Roman Penyaev Date: Tue, 5 Mar 2019 13:22:59 +0100 Subject: [PATCH] EventEpoll: set EPOLLET flag on del_event() When new fd is being added to epoll fd EPOLLET (edge triggered) flag is set, i.e. we assume that in and out works in edge triggered mode. But on del_event(), when eventually epoll_ctl(EPOLL_CTL_MOD) is invoked, EPOLLET flag is cleared, i.e. level triggered mode is enabled. Do not lose EPOLLET. Signed-off-by: Roman Penyaev --- src/msg/async/EventEpoll.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/msg/async/EventEpoll.cc b/src/msg/async/EventEpoll.cc index 37b46973624..7cc179a65d0 100644 --- a/src/msg/async/EventEpoll.cc +++ b/src/msg/async/EventEpoll.cc @@ -87,7 +87,7 @@ int EpollDriver::del_event(int fd, int cur_mask, int delmask) int mask = cur_mask & (~delmask); int r = 0; - ee.events = 0; + ee.events = EPOLLET; if (mask & EVENT_READABLE) ee.events |= EPOLLIN; if (mask & EVENT_WRITABLE) ee.events |= EPOLLOUT; ee.data.u64 = 0; /* avoid valgrind warning */ -- 2.39.5