From: Miod Vallat Date: Wed, 2 Jul 2025 10:13:31 +0000 (+0200) Subject: Tweak logic in updateDNSSECOrderNameAndAuth(). NFC X-Git-Tag: rec-5.3.0-alpha2~10^2~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=89019afc3bdfe8412aae5df719267a1fcee6482b;p=thirdparty%2Fpdns.git Tweak logic in updateDNSSECOrderNameAndAuth(). NFC Signed-off-by: Miod Vallat --- diff --git a/modules/lmdbbackend/lmdbbackend.cc b/modules/lmdbbackend/lmdbbackend.cc index 9f27a9b673..787fcc2fe8 100644 --- a/modules/lmdbbackend/lmdbbackend.cc +++ b/modules/lmdbbackend/lmdbbackend.cc @@ -2672,31 +2672,31 @@ bool LMDBBackend::updateDNSSECOrderNameAndAuth(domainid_t domain_id, const DNSNa bool needNSEC3 = hasOrderName; do { - vector lrrs; - - if (co.getQType(key.getNoStripHeader()) != QType::NSEC3) { - deserializeFromBuffer(val.get(), lrrs); - bool changed = false; - vector newRRs; - newRRs.reserve(lrrs.size()); - for (auto& lrr : lrrs) { - lrr.qtype = co.getQType(key.getNoStripHeader()); - if (!needNSEC3 && qtype != QType::ANY) { - needNSEC3 = (lrr.ordername && QType(qtype) != lrr.qtype); - } + if (co.getQType(key.getNoStripHeader()) == QType::NSEC3) { + continue; + } - if ((qtype == QType::ANY || QType(qtype) == lrr.qtype) && (lrr.ordername != hasOrderName || lrr.auth != auth)) { - lrr.auth = auth; - lrr.ordername = hasOrderName; - changed = true; - } - newRRs.push_back(std::move(lrr)); + vector lrrs; + deserializeFromBuffer(val.get(), lrrs); + bool changed = false; + vector newRRs; + newRRs.reserve(lrrs.size()); + for (auto& lrr : lrrs) { + lrr.qtype = co.getQType(key.getNoStripHeader()); + if (!needNSEC3 && qtype != QType::ANY) { + needNSEC3 = (lrr.ordername && QType(qtype) != lrr.qtype); } - if (changed) { - cursor.put(key, serializeToBuffer(newRRs)); + + if ((qtype == QType::ANY || QType(qtype) == lrr.qtype) && (lrr.ordername != hasOrderName || lrr.auth != auth)) { + lrr.auth = auth; + lrr.ordername = hasOrderName; + changed = true; } + newRRs.push_back(std::move(lrr)); + } + if (changed) { + cursor.put(key, serializeToBuffer(newRRs)); } - } while (cursor.next(key, val) == 0); bool del = false;