]> PatchyGit - patchyircd.git/commitdiff
netpoll: fix memory leaks
authorEgor <egor@patchysicp.xyz>
Sat, 1 Mar 2025 21:19:59 +0000 (23:19 +0200)
committerEgor <egor@patchysicp.xyz>
Sat, 1 Mar 2025 21:19:59 +0000 (23:19 +0200)
src/job.cpp
src/netpoll.cpp

index 336d876..248164b 100644 (file)
@@ -75,9 +75,9 @@ void job_init(void)
 }
 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)
index 7b98a73..13a0dc6 100644 (file)
@@ -239,7 +239,11 @@ void net_poll_init(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)
 {
@@ -258,7 +262,7 @@ static void net_poll_del_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--;
 }