]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
refactor getUpdatedMasters
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Wed, 26 Apr 2023 14:07:30 +0000 (16:07 +0200)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Wed, 26 Apr 2023 14:07:30 +0000 (16:07 +0200)
modules/lmdbbackend/lmdbbackend.cc

index cdc2baa421fd5c4e4458ffcb716dc3f3407e598f..4b127bb6cb7910bb9f35f44e02ca11a69f776123 100644 (file)
@@ -1725,35 +1725,29 @@ void LMDBBackend::setFresh(uint32_t domain_id)
 
 void LMDBBackend::getUpdatedMasters(vector<DomainInfo>& updatedDomains, std::unordered_set<DNSName>& catalogs, CatalogHashMap& catalogHashes)
 {
-  DomainInfo di;
   CatalogInfo ci;
-
-  auto txn = d_tdomains->getROTransaction();
-  for (auto iter = txn.begin(); iter != txn.end(); ++iter) {
-
-    if (!iter->isPrimaryType()) {
-      continue;
+  
+  getAllDomainsFiltered(&(updatedDomains), [this, &catalogs, &catalogHashes, &ci](DomainInfo& di) {
+    if (!di.isPrimaryType()) {
+      return false;
     }
 
-    if (iter->kind == DomainInfo::Producer) {
-      catalogs.insert(iter->zone);
-      catalogHashes[iter->zone].process("\0");
-      continue; // Producer fresness check is performed elsewhere
+    if (di.kind == DomainInfo::Producer) {
+      catalogs.insert(di.zone);
+      catalogHashes[di.zone].process("\0");
+      return false; // Producer fresness check is performed elsewhere
     }
 
-    di = *iter;
-    di.id = iter.getID();
-
-    if (!iter->catalog.empty()) {
-      ci.fromJson(iter->options, CatalogInfo::CatalogType::Producer);
+    if (!di.catalog.empty()) {
+      ci.fromJson(di.options, CatalogInfo::CatalogType::Producer);
       ci.updateHash(catalogHashes, di);
     }
 
     if (getSerial(di) && di.serial != di.notified_serial) {
       di.backend = this;
-      updatedDomains.emplace_back(di);
+      return true;
     }
-  }
+  });
 }
 
 void LMDBBackend::setNotified(uint32_t domain_id, uint32_t serial)