From 7f9647d16e5bbba483134604ac8e51bb97b579dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Mon, 18 Aug 2025 17:11:03 +0200 Subject: [PATCH] Disassociate added rdataset on error in cache_rrset() When first dns_db_addrdataset() succeeds in cache_rrset(), but the second one fails with error, the added rdataset was kept associated. This caused assertion failure down the pipe in fctx_sendevents(). --- lib/dns/resolver.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/lib/dns/resolver.c b/lib/dns/resolver.c index 970e6f1708..f3cadf3a6f 100644 --- a/lib/dns/resolver.c +++ b/lib/dns/resolver.c @@ -5286,6 +5286,9 @@ cache_rrset(fetchctx_t *fctx, isc_stdtime_t now, dns_name_t *name, if (result == ISC_R_SUCCESS && sigrdataset != NULL) { result = dns_db_addrdataset(fctx->cache, node, NULL, now, sigrdataset, options, addedsig); + if (result != ISC_R_SUCCESS && result != DNS_R_UNCHANGED) { + dns__rdataset_disassociate(added); + } } if (result == DNS_R_UNCHANGED) {