ioset_epoll_events(struct io_fd *fd)
{
return EPOLLHUP
- | (fd_wants_reads(fd) ? EPOLLIN : 0)
+ | EPOLLIN
| (fd_wants_writes(fd) ? EPOLLOUT : 0)
;
}
}
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