channel: Move mch_exit(0) call to a non-deferred event handler

Since `mch_exit` will re-enter event_poll, it is necessary to call it outside
libuv event loop.
This commit is contained in:
Thiago de Arruda 2014-11-03 15:41:54 -03:00
parent 74b9f33a95
commit 636fc6b08d

View File

@ -600,11 +600,16 @@ static void close_channel(Channel *channel)
if (handle) {
uv_close(handle, close_cb);
} else {
mch_exit(0);
event_push((Event) { .handler = on_stdio_close }, false);
}
}
}
static void on_stdio_close(Event e)
{
mch_exit(0);
}
static void free_channel(Channel *channel)
{
pmap_del(uint64_t)(channels, channel->id);