Diff between 8587edd4c212c8093c643c1872192b28d221e91c and 77c0e84f2403278177ada66a7c0dfccc61c851c2
Changed Files
| File | Additions | Deletions | Status |
| src/shared/io-mainloop.c | +5 | -0 | modified |
Full Patch
diff --git a/src/shared/io-mainloop.c b/src/shared/io-mainloop.c
index 3e33d88..1563ce5 100644
--- a/src/shared/io-mainloop.c
+++ b/src/shared/io-mainloop.c
@@ -92,12 +92,15 @@ static void io_callback(int fd, uint32_t events, void *user_data)
{
struct io *io = user_data;
+ io_ref(io);
+
if ((events & (EPOLLRDHUP | EPOLLHUP | EPOLLERR))) {
io->read_callback = NULL;
io->write_callback = NULL;
if (!io->disconnect_callback) {
mainloop_remove_fd(io->fd);
+ io_unref(io);
return;
}
@@ -144,6 +147,8 @@ static void io_callback(int fd, uint32_t events, void *user_data)
mainloop_modify_fd(io->fd, io->events);
}
}
+
+ io_unref(io);
}
struct io *io_new(int fd)