From c46d52fe469d0d2d202ebc431a3a452c818ec71e Mon Sep 17 00:00:00 2001 From: Ilya Shipitsin Date: Thu, 16 Jul 2020 02:02:40 +0500 Subject: [PATCH] BUG/MEDIUM: server: resolve state file handle leak on reload During reload, server state file is read and file handle is not released this was indepently reported in #738 and #660. partially resolves #660. This should be backported to 2.2 and 2.1. (cherry picked from commit dc6e8a9a7b19052b8fd8ab7f9a84a4a95b4a6d5b) Signed-off-by: Willy Tarreau (cherry picked from commit d74774bca53a2f4c30995d01eeb028dde313fc29) Signed-off-by: Christopher Faulet --- src/server.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/server.c b/src/server.c index 408458f..dd7b9bf 100644 --- a/src/server.c +++ b/src/server.c @@ -3515,6 +3515,11 @@ void apply_server_state(void) } out_load_server_state_in_tree: + if (f) { + fclose(f); + f = NULL; + } + /* parse all proxies and load states form tree (global file) or from local file */ for (curproxy = proxies_list; curproxy != NULL; curproxy = curproxy->next) { /* servers are only in backends */ @@ -3694,9 +3699,11 @@ void apply_server_state(void) /* now we can proceed with server's state update */ srv_update_state(srv, version, srv_params); } + + fileclose: + fclose(f); + } -fileclose: - fclose(f); } /* now free memory allocated for the tree */ -- 1.7.10.4