From 9b1d15f53a194a7704d7b8a1e27d8dd02fe2f17d Mon Sep 17 00:00:00 2001 From: Aurelien DARRAGON Date: Thu, 9 Mar 2023 12:07:09 +0100 Subject: [PATCH] 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] --- src/haproxy.c | 4 ++++ src/sink.c | 1 + 2 files changed, 5 insertions(+) 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); -- 2.39.5