fix possible crash on user deletion
[srvx.git] / src / ioset-epoll.c
index 4e0589c364a705c288381d7add8aacd49ff173b6..40e30ba3285bc1d5306ae259167f02a025f3d7c2 100644 (file)
@@ -46,7 +46,7 @@ static int
 ioset_epoll_events(struct io_fd *fd)
 {
     return EPOLLHUP
-        | (fd_wants_reads(fd) ? EPOLLIN : 0)
+        | EPOLLIN
         | (fd_wants_writes(fd) ? EPOLLOUT : 0)
         ;
 }
@@ -65,10 +65,11 @@ ioset_epoll_add(struct io_fd *fd)
 }
 
 static void
-ioset_epoll_remove(struct io_fd *fd)
+ioset_epoll_remove(struct io_fd *fd, int closed)
 {
     static struct epoll_event evt;
-    (void)epoll_ctl(epoll_fd, EPOLL_CTL_DEL, fd->fd, &evt);
+    if (!closed)
+        (void)epoll_ctl(epoll_fd, EPOLL_CTL_DEL, fd->fd, &evt);
 }
 
 static void