From 52384156dd38a52ab00f78a09e8200ae49d5dad9 Mon Sep 17 00:00:00 2001 From: Liviu Chircu Date: Fri, 7 Feb 2020 14:18:08 +0200 Subject: [PATCH] qrouting: Fix some buggy corner-cases * fix un-initialized stat history intervals * improve handling for OOM during a dr_reload --- modules/qrouting/qr_stats.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/qrouting/qr_stats.c b/modules/qrouting/qr_stats.c index f7ab3cf9e6..faeca1781c 100644 --- a/modules/qrouting/qr_stats.c +++ b/modules/qrouting/qr_stats.c @@ -49,11 +49,13 @@ qr_sample_t *create_history(void) LM_ERR("oom\n"); return NULL; } + memset(history, 0, sizeof *history); for (tmp = history, i = 0; i < qr_n-1; tmp = tmp->next, ++i) { tmp->next = shm_malloc(sizeof *tmp->next); if (!tmp->next) goto error; + memset(tmp->next, 0, sizeof *tmp->next); } tmp->next = history; @@ -399,6 +401,8 @@ void qr_rld_prepare_part(void *param) if (pl) shm_free(pl); + + qr_rld_list = NULL; } void qr_rld_finalize(void *param) @@ -408,10 +412,9 @@ void qr_rld_finalize(void *param) qr_rule_t *old_rules = NULL; int i; - if (!qr_rld_list) { - LM_BUG("NULL qr_rld_list\n"); + /* may happen if we ran OOM while preparing a new part */ + if (!qr_rld_list) return; - } part_name = qr_rld_list->part_name[0];