]> git.meshlink.io Git - meshlink/blobdiff - src/net.c
Fix memory leaks from timers.
[meshlink] / src / net.c
index 9dd42dd5acf678eeffd08e28f93a96404760b044..c7c6723c27d3eef7e9e797e8c8991b551617b141 100644 (file)
--- a/src/net.c
+++ b/src/net.c
@@ -706,15 +706,17 @@ int main_loop(meshlink_handle_t *mesh) {
        mesh->datafromapp.signum = 0;
        signal_add(&(mesh->loop), &(mesh->datafromapp), (signal_cb_t)meshlink_send_from_queue, mesh, mesh->datafromapp.signum);
 
-       if(!event_loop_run(&(mesh->loop), &(mesh->mesh_mutex))) {
+       if(!event_loop_run(&mesh->loop, &mesh->mesh_mutex)) {
                logger(mesh, MESHLINK_ERROR, "Error while waiting for input: %s", strerror(errno));
                abort();
+               signal_del(&mesh->loop, &mesh->datafromapp);
                timeout_del(&mesh->loop, &mesh->periodictimer);
                timeout_del(&mesh->loop, &mesh->pingtimer);
 
                return 1;
        }
 
+       signal_del(&mesh->loop, &mesh->datafromapp);
        timeout_del(&mesh->loop, &mesh->periodictimer);
        timeout_del(&mesh->loop, &mesh->pingtimer);