From: Aurelien DARRAGON Date: Thu, 9 Mar 2023 11:07:09 +0000 (+0100) Subject: BUG/MINOR: sink: free forward_px on deinit() X-Git-Tag: v2.8-dev7~64 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9b1d15f53a;p=thirdparty%2Fhaproxy.git BUG/MINOR: sink: free forward_px on deinit() When a ring section is configured, a new sink is created and forward_px proxy may be allocated and assigned to the sink. Such sink-related proxies are added to the sink_proxies_list and thus don't belong to the main proxy list which is cleaned up in haproxy deinit() function. We don't have to manually clean up sink_proxies_list in the main deinit() func: sink API already provides the sink_deinit() function so we just add the missing free_proxy(sink->forward_px) there. This could be backported up to 2.4. [in 2.4, commit b0281a49 ("MINOR: proxy: check if p is NULL in free_proxy()") must be backported first] --- diff --git a/src/haproxy.c b/src/haproxy.c index 852e514025..3195be69de 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -2780,6 +2780,10 @@ void deinit(void) free_proxy(p0); }/* end while(p) */ + /* we don't need to free sink_proxies_list proxies since it is + * already handled in sink_deinit() + */ + /* destroy all referenced defaults proxies */ proxy_destroy_all_unref_defaults(); diff --git a/src/sink.c b/src/sink.c index 67bdcaa39f..55b6ad1ece 100644 --- a/src/sink.c +++ b/src/sink.c @@ -1368,6 +1368,7 @@ static void sink_deinit() } LIST_DELETE(&sink->sink_list); task_destroy(sink->forward_task); + free_proxy(sink->forward_px); free(sink->name); free(sink->desc); free(sink);