ZyklonB: fix issues with plugin unloading
This commit is contained in:
parent
ccf6b1427f
commit
3d44081789
11
zyklonb.c
11
zyklonb.c
|
@ -2159,12 +2159,17 @@ on_signal_pipe_readable (const struct pollfd *fd, struct bot_context *ctx)
|
||||||
|
|
||||||
plugin->pid = -1;
|
plugin->pid = -1;
|
||||||
|
|
||||||
|
// In theory we could close `read_fd', set `read_event->closed' to true
|
||||||
|
// and expect epoll to no longer return events for the descriptor, as
|
||||||
|
// all the pipe ends should be closed by then (the child is dead, so its
|
||||||
|
// pipe FDs have been closed [assuming it hasn't forked without closing
|
||||||
|
// the descriptors, which would be evil], and we would have closed all
|
||||||
|
// of our FDs for this pipe as well). In practice that doesn't work.
|
||||||
|
poller_fd_reset (&plugin->read_event);
|
||||||
|
|
||||||
xclose (plugin->read_fd);
|
xclose (plugin->read_fd);
|
||||||
plugin->read_fd = -1;
|
plugin->read_fd = -1;
|
||||||
|
|
||||||
plugin->read_event.closed = true;
|
|
||||||
poller_fd_reset (&plugin->read_event);
|
|
||||||
|
|
||||||
LIST_UNLINK (ctx->plugins, plugin);
|
LIST_UNLINK (ctx->plugins, plugin);
|
||||||
plugin_data_free (plugin);
|
plugin_data_free (plugin);
|
||||||
free (plugin);
|
free (plugin);
|
||||||
|
|
Loading…
Reference in New Issue