]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
move loop into getAllDomainsFiltered
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Wed, 26 Apr 2023 12:06:11 +0000 (14:06 +0200)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Wed, 26 Apr 2023 12:24:20 +0000 (14:24 +0200)
modules/lmdbbackend/lmdbbackend.cc
modules/lmdbbackend/lmdbbackend.hh

index c9a47a613a62466239fbf35e2394074f41872c2d..4006e813f563cecc406c019f8dcac3660f9ec3d4 100644 (file)
@@ -1651,22 +1651,31 @@ bool LMDBBackend::createDomain(const DNSName& domain, const DomainInfo::DomainKi
   return true;
 }
 
-void LMDBBackend::getAllDomains(vector<DomainInfo>* domains, bool /* doSerial */, bool include_disabled)
-{
-  domains->clear();
+void LMDBBackend::getAllDomainsFiltered(vector<DomainInfo>* domains, const std::function<bool(DomainInfo&)>& allow) {
   auto txn = d_tdomains->getROTransaction();
   for (auto iter = txn.begin(); iter != txn.end(); ++iter) {
-    // cerr<<"iter"<<endl;
     DomainInfo di = *iter;
     di.id = iter.getID();
+    di.backend = this;
+
+    if (allow (di)) {
+      domains->push_back(di);
+    }
+  }
+}
 
+void LMDBBackend::getAllDomains(vector<DomainInfo>* domains, bool /* doSerial */, bool include_disabled)
+{
+  domains->clear();
+
+  getAllDomainsFiltered(domains, [this, include_disabled](DomainInfo& di) {
     if (!getSerial(di) && !include_disabled) {
-      continue;
+      return false;
     }
 
-    di.backend = this;
-    domains->push_back(di);
-  }
+    return true;
+  });
+
 }
 
 void LMDBBackend::getUnfreshSlaveInfos(vector<DomainInfo>* domains)
index 062e0d4976568906495864741a130857733d65c9..3b69451ec65fc68243d2b8a3cdaf29eef12cfb3c 100644 (file)
@@ -309,6 +309,8 @@ private:
   int genChangeDomain(uint32_t id, std::function<void(DomainInfo&)> func);
   void deleteDomainRecords(RecordsRWTransaction& txn, uint32_t domain_id, uint16_t qtype = QType::ANY);
 
+  void getAllDomainsFiltered(vector<DomainInfo>* domains, const std::function<bool(DomainInfo&)>& allow);
+
   bool getSerial(DomainInfo& di);
 
   bool upgradeToSchemav3();