From 8f347381bb1380dd8ecf1d56f015a8188af42052 Mon Sep 17 00:00:00 2001 From: Amaury Denoyelle Date: Tue, 10 Nov 2020 14:24:30 +0100 Subject: [PATCH] BUG/MINOR: stats: free dynamically stats fields/lines on shutdown Register a new function on POST DEINIT to free stats fields/lines for each domain. This patch does not fix a critical bug but may be backported to 2.3. (cherry picked from commit a2a6899bee5add180afb02ac2b1ce7cb360a96e3) Signed-off-by: Christopher Faulet --- src/stats.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/stats.c b/src/stats.c index 762672f..ad92d71 100644 --- a/src/stats.c +++ b/src/stats.c @@ -4548,6 +4548,23 @@ static int allocate_stats_dns_postcheck(void) REGISTER_CONFIG_POSTPARSER("allocate-stats-dns", allocate_stats_dns_postcheck); +static void deinit_stats(void) +{ + int domains[] = { STATS_DOMAIN_PROXY, STATS_DOMAIN_DNS }, i; + + for (i = 0; i < STATS_DOMAIN_COUNT; ++i) { + const int domain = domains[i]; + + if (stat_l[domain]) + free(stat_l[domain]); + + if (stat_f[domain]) + free(stat_f[domain]); + } +} + +REGISTER_POST_DEINIT(deinit_stats); + /* register cli keywords */ static struct cli_kw_list cli_kws = {{ },{ { { "clear", "counters", NULL }, "clear counters : clear max statistics counters (add 'all' for all counters)", cli_parse_clear_counters, NULL, NULL }, -- 1.7.10.4