From 04c52148bbf10e734b522e845b859b8ba9f8fd7f Mon Sep 17 00:00:00 2001 From: Alessio Podda Date: Mon, 23 Feb 2026 11:40:06 +0100 Subject: [PATCH] Do not update the case on unchanged rdatasets Fix an assertion failure on unchanged rdataset during IXFR. --- lib/dns/qpzone.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/dns/qpzone.c b/lib/dns/qpzone.c index ae09403435..445f63f58e 100644 --- a/lib/dns/qpzone.c +++ b/lib/dns/qpzone.c @@ -5347,9 +5347,12 @@ qpzone_update_rdataset(qpzonedb_t *qpdb, qpz_version_t *version, rds, options, &ardataset, ctx->nsec DNS__DB_FLARG_PASS); switch (result) { case ISC_R_SUCCESS: + if (dns_rdataset_isassociated(&ardataset)) { + dns_rdataset_setownercase(&ardataset, name); + } + break; case DNS_R_UNCHANGED: case DNS_R_NXRRSET: - dns_rdataset_setownercase(&ardataset, name); CHECK(result); break; default: @@ -5373,9 +5376,12 @@ qpzone_update_rdataset(qpzonedb_t *qpdb, qpz_version_t *version, op == DNS_DIFFOP_ADDRESIGN); if (result == ISC_R_SUCCESS && is_resign) { - isc_stdtime_t resign; - resign = dns_rdataset_minresign(&ardataset); - dns_db_setsigningtime((dns_db_t *)qpdb, &ardataset, resign); + if (dns_rdataset_isassociated(&ardataset)) { + isc_stdtime_t resign; + resign = dns_rdataset_minresign(&ardataset); + dns_db_setsigningtime((dns_db_t *)qpdb, &ardataset, + resign); + } } cleanup: