From 704c87d5128da713b2853fc320d675b7715a739a Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Mon, 3 Mar 2025 00:56:17 +0300 Subject: [PATCH] Trigger initial epoll when adding an FD --- src/util/epoll_manager.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/util/epoll_manager.cpp b/src/util/epoll_manager.cpp index 7dc127ae..4a299e57 100644 --- a/src/util/epoll_manager.cpp +++ b/src/util/epoll_manager.cpp @@ -3,6 +3,7 @@ #include #include +#include #include #include @@ -74,6 +75,27 @@ void epoll_manager_t::set_fd_handler(int fd, bool wr, std::function 0) + { + auto events = ((initpoll.revents & POLLOUT) ? EPOLLOUT : 0) | + ((initpoll.revents & POLLIN) ? EPOLLIN : 0) | + ((initpoll.revents & POLLRDHUP) ? EPOLLRDHUP : 0); + tfd->set_timer_us(1, false, [this, fd, events](int) + { + auto cb_it = epoll_handlers.find(fd); + if (cb_it != epoll_handlers.end()) + { + auto & cb = cb_it->second; + cb(fd, events); + } + }); + } } else {