From: Miod Vallat Date: Wed, 18 Jun 2025 09:26:49 +0000 (+0200) Subject: Rework deleteDomainRecords() interface. X-Git-Tag: dnsdist-2.0.0-beta1~2^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=759127267ba7fb55d80d39e2a0c9a7159733bc15;p=thirdparty%2Fpdns.git Rework deleteDomainRecords() interface. NFC yet, will benefit upcoming commits. Signed-off-by: Miod Vallat --- diff --git a/modules/lmdbbackend/lmdbbackend.cc b/modules/lmdbbackend/lmdbbackend.cc index acfac59dcf..3e17a7f9bb 100644 --- a/modules/lmdbbackend/lmdbbackend.cc +++ b/modules/lmdbbackend/lmdbbackend.cc @@ -1111,20 +1111,20 @@ static std::shared_ptr deserializeContentZR(uint16_t qtype, co #define StringView string #endif -void LMDBBackend::deleteDomainRecords(RecordsRWTransaction& txn, domainid_t domain_id, uint16_t qtype) +void LMDBBackend::deleteDomainRecords(RecordsRWTransaction& txn, uint16_t qtype, const std::string& match) { - compoundOrdername co; - string match = co(domain_id); - auto cursor = txn.txn->getCursor(txn.db->dbi); - MDBOutVal key, val; - // cout<<"Match: "<().rfind(match, 0) == 0) { - if (qtype == QType::ANY || co.getQType(key.getNoStripHeader()) == qtype) + if (qtype == QType::ANY || compoundOrdername::getQType(key.getNoStripHeader()) == qtype) { cursor.del(); - if (cursor.next(key, val)) + } + if (cursor.next(key, val) != 0) { break; + } } } } @@ -1162,7 +1162,9 @@ bool LMDBBackend::startTransaction(const ZoneName& domain, domainid_t domain_id) d_transactiondomain = domain; d_transactiondomainid = real_id; if (domain_id != UnknownDomainID) { - LMDBBackend::deleteDomainRecords(*d_rwtxn, domain_id); + compoundOrdername order; + string match = order(domain_id); + LMDBBackend::deleteDomainRecords(*d_rwtxn, QType::ANY, match); } return true; @@ -2776,7 +2778,9 @@ bool LMDBBackend::updateEmptyNonTerminals(domainid_t domain_id, set& in // if remove is set, all ENTs should be removed & nothing else should be done if (remove) { - LMDBBackend::deleteDomainRecords(*txn, domain_id, 0); + compoundOrdername order; + string match = order(domain_id); + LMDBBackend::deleteDomainRecords(*txn, QType::ENT, match); } else { DomainInfo di; diff --git a/modules/lmdbbackend/lmdbbackend.hh b/modules/lmdbbackend/lmdbbackend.hh index a9aaeb02aa..dd2b5142dc 100644 --- a/modules/lmdbbackend/lmdbbackend.hh +++ b/modules/lmdbbackend/lmdbbackend.hh @@ -331,7 +331,7 @@ private: std::shared_ptr getRecordsROTransaction(domainid_t id, const std::shared_ptr& rwtxn = nullptr); int genChangeDomain(const ZoneName& domain, const std::function& func); int genChangeDomain(domainid_t id, const std::function& func); - static void deleteDomainRecords(RecordsRWTransaction& txn, domainid_t domain_id, uint16_t qtype = QType::ANY); + static void deleteDomainRecords(RecordsRWTransaction& txn, uint16_t qtype, const std::string& match); void getAllDomainsFiltered(vector* domains, const std::function& allow);