summaryrefslogtreecommitdiff
path: root/io_muxer.c
diff options
context:
space:
mode:
Diffstat (limited to 'io_muxer.c')
-rw-r--r--io_muxer.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/io_muxer.c b/io_muxer.c
index 4c4c0e2..e56cb0b 100644
--- a/io_muxer.c
+++ b/io_muxer.c
@@ -98,12 +98,18 @@ enum IoMuxerResult IoMuxerIterate(struct IoMuxer* io_muxer, int timeout) {
break;
}
for (size_t i = 0; i < io_muxer->size; i++) {
- if (io_muxer->pfds[i].revents)
+ if (io_muxer->pfds[i].revents && io_muxer->pfds[i].revents != POLLNVAL)
io_muxer->tasks[i].fun(io_muxer->tasks[i].user);
}
return kIoMuxerResultSuccess;
}
+void IoMuxerForget(struct IoMuxer* io_muxer, int fd) {
+ for (size_t i = 0; i < io_muxer->size; i++) {
+ if (io_muxer->pfds[i].fd == fd) io_muxer->pfds[i].revents = POLLNVAL;
+ }
+}
+
void IoMuxerDestroy(struct IoMuxer* io_muxer) {
free(io_muxer->pfds);
free(io_muxer->tasks);