From: Kees Monshouwer Date: Thu, 21 Nov 2019 22:23:20 +0000 (+0100) Subject: auth: lmdb-backend, remove duplicate code and some unused variables X-Git-Tag: auth-4.3.0-beta1~22^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f8ef074089aec655dd8b6e71c76130bd7d6bc812;p=thirdparty%2Fpdns.git auth: lmdb-backend, remove duplicate code and some unused variables --- diff --git a/modules/lmdbbackend/lmdbbackend.cc b/modules/lmdbbackend/lmdbbackend.cc index e64d160ec5..dfa28a7e09 100644 --- a/modules/lmdbbackend/lmdbbackend.cc +++ b/modules/lmdbbackend/lmdbbackend.cc @@ -518,11 +518,9 @@ bool LMDBBackend::deleteDomain(const DNSName &domain) bool LMDBBackend::list(const DNSName &target, int id, bool include_disabled) { - d_inlist=true; DomainInfo di; { auto dtxn = d_tdomains->getROTransaction(); - if((di.id = dtxn.get<0>(target, di))) ; // cout<<"Found domain "<(d_rotxn->txn->getCursor(d_rotxn->db->dbi)); + compoundOrdername co; d_matchkey = co(di.id); - d_getcursor = std::make_shared(d_rotxn->txn->getCursor(d_rotxn->db->dbi)); + MDBOutVal key, val; - d_inlist = true; - if(d_getcursor->lower_bound(d_matchkey, key, val) || key.get().rfind(d_matchkey, 0) != 0) { // cout<<"Found nothing for list"<(d_rotxn->txn->getCursor(d_rotxn->db->dbi)); MDBOutVal key, val; if(type.getCode() == QType::ANY) { - d_matchkey = co(zoneId,relqname); + d_matchkey = co(zoneId, relqname); } else { - d_matchkey= co(zoneId,relqname, type.getCode()); + d_matchkey= co(zoneId, relqname, type.getCode()); } - d_inlist=false; if(d_getcursor->lower_bound(d_matchkey, key, val) || key.get().rfind(d_matchkey, 0) != 0) { d_getcursor.reset(); @@ -604,146 +600,68 @@ void LMDBBackend::lookup(const QType &type, const DNSName &qdomain, int zoneId, if(d_dolog) { g_log<getZoneRepresentation(true); - rr.domain_id = dzr.domain_id; - rr.auth = dzr.auth; - // cout<<"old school called for "<(dzr.dr); - sd.domain_id = dzr.domain_id; - sd.ttl = dzr.dr.d_ttl; - sd.qname = dzr.dr.d_name; - - sd.nameserver = src->d_mname; - sd.hostmaster = src->d_rname; - sd.serial = src->d_st.serial; - sd.refresh = src->d_st.refresh; - sd.retry = src->d_st.retry; - sd.expire = src->d_st.expire; - sd.default_ttl = src->d_st.minimum; - - sd.db = this; - found=true; - } - return found; -} -bool LMDBBackend::get_list(DNSZoneRecord& rr) +bool LMDBBackend::get(DNSZoneRecord& rr) { for(;;) { - if(!d_getcursor) { + if(!d_getcursor) { d_rotxn.reset(); return false; } - - MDBOutVal keyv, val; + MDBOutVal keyv, val; d_getcursor->current(keyv, val); + DNSResourceRecord drr; serFromString(val.get(), drr); - + auto key = keyv.get(); - rr.dr.d_name = compoundOrdername::getQName(key) + d_lookupqname; - rr.domain_id = compoundOrdername::getDomainID(key); rr.dr.d_type = compoundOrdername::getQType(key).getCode(); - rr.dr.d_ttl = drr.ttl; - rr.auth = drr.auth; - + if(rr.dr.d_type == QType::NSEC3) { - // cout << "Had a magic NSEC3, skipping it" << endl; + // Hit a magic NSEC3 skipping if(d_getcursor->next(keyv, val) || keyv.get().rfind(d_matchkey, 0) != 0) { d_getcursor.reset(); } + continue; } + + rr.dr.d_name = compoundOrdername::getQName(key) + d_lookupdomain; + rr.domain_id = compoundOrdername::getDomainID(key); + rr.dr.d_ttl = drr.ttl; rr.dr.d_content = unserializeContentZR(rr.dr.d_type, rr.dr.d_name, drr.content); - + rr.auth = drr.auth; + if(d_getcursor->next(keyv, val) || keyv.get().rfind(d_matchkey, 0) != 0) { d_getcursor.reset(); } + break; } + return true; } -bool LMDBBackend::get_lookup(DNSZoneRecord& rr) +bool LMDBBackend::get(DNSResourceRecord& rr) { - for(;;) { - if(!d_getcursor) { - d_rotxn.reset(); - return false; - } - MDBOutVal keyv, val; - d_getcursor->current(keyv, val); - DNSResourceRecord drr; - serFromString(val.get(), drr); - - auto key = keyv.get(); - - rr.dr.d_name = compoundOrdername::getQName(key) + d_lookupdomain; - - rr.domain_id = compoundOrdername::getDomainID(key); - // cout << "We found "<next(keyv, val) || keyv.get().rfind(d_matchkey, 0) != 0) { - d_getcursor.reset(); - d_rotxn.reset(); - } - continue; - } - - rr.dr.d_content = unserializeContentZR(rr.dr.d_type, rr.dr.d_name, drr.content); - rr.auth = drr.auth; - if(d_getcursor->next(keyv, val) || keyv.get().rfind(d_matchkey, 0) != 0) { - d_getcursor.reset(); - d_rotxn.reset(); - } - break; + DNSZoneRecord dzr; + if(!get(dzr)) { + return false; } - + rr.qname = dzr.dr.d_name; + rr.ttl = dzr.dr.d_ttl; + rr.qtype = dzr.dr.d_type; + rr.content = dzr.dr.d_content->getZoneRepresentation(true); + rr.domain_id = dzr.domain_id; + rr.auth = dzr.auth; + return true; } diff --git a/modules/lmdbbackend/lmdbbackend.hh b/modules/lmdbbackend/lmdbbackend.hh index 5918067edf..b01a849981 100644 --- a/modules/lmdbbackend/lmdbbackend.hh +++ b/modules/lmdbbackend/lmdbbackend.hh @@ -55,7 +55,6 @@ public: bool get(DNSResourceRecord &rr) override; bool get(DNSZoneRecord& dzr) override; - bool getSOA(const DNSName &domain, SOAData &sd) override; void getUnfreshSlaveInfos(vector* domains) override; bool setMaster(const DNSName &domain, const string &ip) override; @@ -259,11 +258,7 @@ private: bool get_list(DNSZoneRecord &rr); bool get_lookup(DNSZoneRecord &rr); - bool d_inlist{false}; - QType d_lookuptype; // for get after lookup std::string d_matchkey; - int32_t d_lookupdomainid; // for get after lookup - DNSName d_lookupqname; DNSName d_lookupdomain; DNSName d_transactiondomain;