From c5d884e60d1a708fd49540b622c66cfb6eb170b1 Mon Sep 17 00:00:00 2001 From: Liviu Chircu Date: Thu, 13 Jan 2022 15:32:48 +0200 Subject: [PATCH] mid_registrar: Improve previous commit Check the domain list for duplicates before appending a new one. --- modules/mid_registrar/mid_registrar.c | 29 ++++++++++++++------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/modules/mid_registrar/mid_registrar.c b/modules/mid_registrar/mid_registrar.c index 97ee96a8d5a..11ded09ec9f 100644 --- a/modules/mid_registrar/mid_registrar.c +++ b/modules/mid_registrar/mid_registrar.c @@ -231,29 +231,30 @@ int is_mid_reg_domain(const str *dom) static int domain_fixup(void** param) { udomain_t* d; + str *dom_s = (str *)*param; /* CMD_PARAM_STATIC is always NT */ str_list *dom; - dom = pkg_malloc(sizeof *dom); - if (!dom) { - LM_ERR("oom\n"); - return E_OUT_OF_MEM; - } - memset(dom, 0, sizeof *dom); + if (!is_mid_reg_domain(dom_s)) { + dom = pkg_malloc(sizeof *dom); + if (!dom) { + LM_ERR("oom\n"); + return E_OUT_OF_MEM; + } + memset(dom, 0, sizeof *dom); - if (pkg_nt_str_dup(&dom->s, (str*)*param) < 0) { - pkg_free(dom); - return E_OUT_OF_MEM; + if (pkg_nt_str_dup(&dom->s, dom_s) < 0) { + pkg_free(dom); + return E_OUT_OF_MEM; + } + + add_last(dom, mid_reg_domains); } - if (ul.register_udomain(dom->s.s, &d) < 0) { + if (ul.register_udomain(dom_s->s, &d) < 0) { LM_ERR("failed to register domain\n"); - pkg_free(dom->s.s); - pkg_free(dom); return E_UNSPEC; } - add_last(dom, mid_reg_domains); - *param = (void*)d; return 0; }