From 3460db01ec7e2b042296d7f703dfa344c893f5ea Mon Sep 17 00:00:00 2001 From: "Evgeny Grin (Karlson2k)" Date: Fri, 23 Oct 2020 14:31:25 +0300 Subject: [PATCH] daemon.c: fixed leak of resources if daemon is failed to start --- src/microhttpd/daemon.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/microhttpd/daemon.c b/src/microhttpd/daemon.c index 10072078..7ffd93cd 100644 --- a/src/microhttpd/daemon.c +++ b/src/microhttpd/daemon.c @@ -6730,7 +6730,11 @@ MHD_start_daemon_va (unsigned int flags, #ifdef EPOLL_SUPPORT if ( (0 != (*pflags & MHD_USE_EPOLL)) && (MHD_NO == setup_epoll_to_listen (d)) ) + { + if (MHD_ITC_IS_VALID_ (d->itc)) + MHD_itc_destroy_chk_ (d->itc); goto thread_failed; + } #endif /* Must init cleanup connection mutex for each worker */ if (! MHD_mutex_init_ (&d->cleanup_connection_mutex)) @@ -6739,6 +6743,8 @@ MHD_start_daemon_va (unsigned int flags, MHD_DLOG (daemon, _ ("MHD failed to initialize cleanup connection mutex.\n")); #endif + if (MHD_ITC_IS_VALID_ (d->itc)) + MHD_itc_destroy_chk_ (d->itc); goto thread_failed; } @@ -6757,6 +6763,8 @@ MHD_start_daemon_va (unsigned int flags, /* Free memory for this worker; cleanup below handles * all previously-created workers. */ MHD_mutex_destroy_chk_ (&d->cleanup_connection_mutex); + if (MHD_ITC_IS_VALID_ (d->itc)) + MHD_itc_destroy_chk_ (d->itc); goto thread_failed; } }