From: Peter van Dijk Date: Wed, 26 Apr 2023 14:07:30 +0000 (+0200) Subject: refactor getUpdatedMasters X-Git-Tag: auth-4.8.0-beta1~1^2~19 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ec6988eb3109b85a54256d084f09676d11819a9f;p=thirdparty%2Fpdns.git refactor getUpdatedMasters --- diff --git a/modules/lmdbbackend/lmdbbackend.cc b/modules/lmdbbackend/lmdbbackend.cc index cdc2baa421..4b127bb6cb 100644 --- a/modules/lmdbbackend/lmdbbackend.cc +++ b/modules/lmdbbackend/lmdbbackend.cc @@ -1725,35 +1725,29 @@ void LMDBBackend::setFresh(uint32_t domain_id) void LMDBBackend::getUpdatedMasters(vector& updatedDomains, std::unordered_set& 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)