From 2e3eae6b9192f742404676093195477eea4119a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Thu, 17 Aug 2023 12:39:10 +0200 Subject: [PATCH] Refactor cleanup code in the qp-trie for the forwarders table Instead of duplicating the destroy_forwarders() code in the cleanup sections, just call dns_forwarders_detach() every time - in case of failure, the forwarders aren't going to be attached, and forwarders object will be destroyed right away. --- lib/dns/forward.c | 35 ++--------------------------------- 1 file changed, 2 insertions(+), 33 deletions(-) diff --git a/lib/dns/forward.c b/lib/dns/forward.c index 77efc595d6..20fdc5d4fb 100644 --- a/lib/dns/forward.c +++ b/lib/dns/forward.c @@ -121,26 +121,8 @@ dns_fwdtable_addfwd(dns_fwdtable_t *fwdtable, const dns_name_t *name, dns_qp_compact(qp, DNS_QPGC_MAYBE); dns_qpmulti_commit(fwdtable->table, &qp); - if (result == ISC_R_SUCCESS) { - dns_forwarders_detach(&forwarders); - } else { - goto cleanup; - } + dns_forwarders_detach(&forwarders); - return (ISC_R_SUCCESS); - -cleanup: - while (!ISC_LIST_EMPTY(forwarders->fwdrs)) { - fwd = ISC_LIST_HEAD(forwarders->fwdrs); - ISC_LIST_UNLINK(forwarders->fwdrs, fwd, link); - if (fwd->tlsname != NULL) { - dns_name_free(fwd->tlsname, fwdtable->mctx); - isc_mem_put(fwdtable->mctx, fwd->tlsname, - sizeof(*fwd->tlsname)); - } - isc_mem_put(fwdtable->mctx, fwd, sizeof(*fwd)); - } - isc_mem_put(fwdtable->mctx, forwarders, sizeof(*forwarders)); return (result); } @@ -171,21 +153,8 @@ dns_fwdtable_add(dns_fwdtable_t *fwdtable, const dns_name_t *name, dns_qp_compact(qp, DNS_QPGC_MAYBE); dns_qpmulti_commit(fwdtable->table, &qp); - if (result == ISC_R_SUCCESS) { - dns_forwarders_detach(&forwarders); - } else { - goto cleanup; - } + dns_forwarders_detach(&forwarders); - return (ISC_R_SUCCESS); - -cleanup: - while (!ISC_LIST_EMPTY(forwarders->fwdrs)) { - fwd = ISC_LIST_HEAD(forwarders->fwdrs); - ISC_LIST_UNLINK(forwarders->fwdrs, fwd, link); - isc_mem_put(fwdtable->mctx, fwd, sizeof(*fwd)); - } - isc_mem_put(fwdtable->mctx, forwarders, sizeof(*forwarders)); return (result); }