--- a/src/server/daemon/event_linux.c Tue Feb 24 21:28:06 2026 +0100 +++ b/src/server/daemon/event_linux.c Wed Feb 25 22:16:20 2026 +0100 @@ -278,8 +278,8 @@ } } -int ev_convert2sys_events(int events) { - int e = EPOLLET; +uint32_t ev_convert2sys_events(int events) { + uint32_t e = EPOLLET | EPOLLRDHUP; if((events & EVENT_POLLIN) == EVENT_POLLIN) { e |= EPOLLIN; } @@ -309,6 +309,15 @@ return epoll_ctl(ev->ep, EPOLL_CTL_ADD, fd, &epev); } +int ev_poll(EventHandler *h, int fd, Event *event) { + EventHandlerLinux *ev = (EventHandlerLinux*)h; + event->object = (intptr_t)fd; + struct epoll_event epev; + epev.events = ev_convert2sys_events(event->events); + epev.data.ptr = event; + return epoll_ctl(ev->ep, EPOLL_CTL_ADD, fd, &epev); +} + int ev_remove_poll(EventHandler *h, int fd) { EventHandlerLinux *ev = (EventHandlerLinux*)h; return epoll_ctl(ev->ep, EPOLL_CTL_DEL, fd, NULL);