}
void job_fini(void)
{
-#ifndef NETPOLL_USE_LIBUV
- uv_signal_stop(&uvsigchld);
- uv_signal_stop(&uvsigint);
+#ifdef NETPOLL_USE_LIBUV
+ uv_close((uv_handle_t *)&uvsigchld, 0);
+ uv_close((uv_handle_t *)&uvsigint, 0);
#endif
}
static void job_process(void)
}
void net_poll_fini(void)
{
- uv_loop_close(uvloop);
+ // get rid of closing handles
+ uv_run(uv_default_loop(), UV_RUN_NOWAIT);
+ if (uv_loop_close(uvloop) != 0)
+ uv_print_all_handles(uvloop, stderr);
+ uv_library_shutdown();
}
static void net_poll_add_impl(int i)
{
struct polldata *poll = uvpoll[i];
memmove(uvpoll+i, uvpoll+i+1, sizeof(uvpoll[0])*(nfds-(i+1)));
uvpoll[nfds-1] = poll;
- uv_poll_stop(&poll->uv);
+ uv_close((uv_handle_t *)&poll->uv, 0);
if (lastptr > i)
lastptr--;
}