]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
Tweak logic in updateDNSSECOrderNameAndAuth(). NFC
authorMiod Vallat <miod.vallat@powerdns.com>
Wed, 2 Jul 2025 10:13:31 +0000 (12:13 +0200)
committerMiod Vallat <miod.vallat@powerdns.com>
Thu, 3 Jul 2025 13:28:54 +0000 (15:28 +0200)
Signed-off-by: Miod Vallat <miod.vallat@powerdns.com>
modules/lmdbbackend/lmdbbackend.cc

index 9f27a9b67369eb30c9ffd9319817f437ba4451b7..787fcc2fe89fb41343df3fdc387f065bc79b658a 100644 (file)
@@ -2672,31 +2672,31 @@ bool LMDBBackend::updateDNSSECOrderNameAndAuth(domainid_t domain_id, const DNSNa
   bool needNSEC3 = hasOrderName;
 
   do {
-    vector<LMDBResourceRecord> lrrs;
-
-    if (co.getQType(key.getNoStripHeader<StringView>()) != QType::NSEC3) {
-      deserializeFromBuffer(val.get<StringView>(), lrrs);
-      bool changed = false;
-      vector<LMDBResourceRecord> newRRs;
-      newRRs.reserve(lrrs.size());
-      for (auto& lrr : lrrs) {
-        lrr.qtype = co.getQType(key.getNoStripHeader<StringView>());
-        if (!needNSEC3 && qtype != QType::ANY) {
-          needNSEC3 = (lrr.ordername && QType(qtype) != lrr.qtype);
-        }
+    if (co.getQType(key.getNoStripHeader<StringView>()) == 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<LMDBResourceRecord> lrrs;
+    deserializeFromBuffer(val.get<StringView>(), lrrs);
+    bool changed = false;
+    vector<LMDBResourceRecord> newRRs;
+    newRRs.reserve(lrrs.size());
+    for (auto& lrr : lrrs) {
+      lrr.qtype = co.getQType(key.getNoStripHeader<StringView>());
+      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;