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 <rpenyaev@suse.de>
(cherry picked from commit
c415b9fed4fbecd2fb0709fa0c0c783102f60e01)
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 */