src/server/daemon/event_linux.c

changeset 704
778dcf4ad63c
parent 617
01228719b3ce
--- 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);

mercurial