From: Marek Vavrusa Date: Fri, 27 May 2016 05:52:39 +0000 (-0700) Subject: daemon: fixed socket mempool cleanup on exit X-Git-Tag: v1.0.0~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=addf898ec1263ca16540e13d92a6a4e18cb3d5e1;p=thirdparty%2Fknot-resolver.git daemon: fixed socket mempool cleanup on exit fixes #73 small leak in cleaning up per-socket mempool on daemon exit --- diff --git a/daemon/io.c b/daemon/io.c index ae079140f..c2df007a7 100644 --- a/daemon/io.c +++ b/daemon/io.c @@ -54,8 +54,10 @@ static void session_clear(struct session *s) void session_free(struct session *s) { - session_clear(s); - free(s); + if (s) { + session_clear(s); + free(s); + } } struct session *session_new(void) diff --git a/daemon/network.c b/daemon/network.c index 26bd72fd8..78dab48ec 100644 --- a/daemon/network.c +++ b/daemon/network.c @@ -50,11 +50,6 @@ void network_init(struct network *net, uv_loop_t *loop) } } -static void free_handle(uv_handle_t *handle) -{ - free(handle); -} - static void close_handle(uv_handle_t *handle, bool force) { if (force) { /* Force close if event loop isn't running. */ @@ -62,9 +57,10 @@ static void close_handle(uv_handle_t *handle, bool force) if (uv_fileno(handle, &fd) == 0) { close(fd); } - free_handle(handle); + handle->loop = NULL; + io_free(handle); } else { /* Asynchronous close */ - uv_close(handle, free_handle); + uv_close(handle, io_free); } }