From: Miod Vallat Date: Fri, 28 Nov 2025 10:38:23 +0000 (+0100) Subject: Skip reading SOA in LMDBBackend::getAllDomains() whenever possible. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=72c3b6a1e24603b236b81e6d61cc429d3ed41ce4;p=thirdparty%2Fpdns.git Skip reading SOA in LMDBBackend::getAllDomains() whenever possible. Signed-off-by: Miod Vallat --- diff --git a/modules/lmdbbackend/lmdbbackend.cc b/modules/lmdbbackend/lmdbbackend.cc index 68de6e8bb2..f2aabcbe3c 100644 --- a/modules/lmdbbackend/lmdbbackend.cc +++ b/modules/lmdbbackend/lmdbbackend.cc @@ -2270,15 +2270,20 @@ void LMDBBackend::getAllDomainsFiltered(vector* domains, const std:: } } -void LMDBBackend::getAllDomains(vector* domains, bool /* doSerial */, bool include_disabled) -{ - getAllDomainsFiltered(domains, [this, include_disabled](DomainInfo& di) { - if (!getSerial(di) && !include_disabled) { - return false; +void LMDBBackend::getAllDomains(vector* domains, bool doSerial, bool include_disabled) +{ + getAllDomainsFiltered(domains, [this, doSerial, include_disabled](DomainInfo& info) { + // We need to read the SOA record in order to know if the domain is + // disabled. If we don't care about serials and want all domains to be + // returned, skip the SOA record retrieval. + if (doSerial || !include_disabled) { + if (!getSerial(info) && !include_disabled) { + return false; + } } // Skip domains with variants if views are disabled. - if (di.zone.hasVariant() && !d_views) { + if (info.zone.hasVariant() && !d_views) { return false; }