From: Kees Monshouwer Date: Mon, 2 Nov 2020 23:54:43 +0000 (+0100) Subject: auth: lmdb fix repaceRRset() X-Git-Tag: auth-4.4.0-alpha3~1^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=refs%2Fpull%2F9664%2Fhead;p=thirdparty%2Fpdns.git auth: lmdb fix repaceRRset() --- diff --git a/modules/lmdbbackend/lmdbbackend.cc b/modules/lmdbbackend/lmdbbackend.cc index 3ac4d2e2ae..429289231b 100644 --- a/modules/lmdbbackend/lmdbbackend.cc +++ b/modules/lmdbbackend/lmdbbackend.cc @@ -485,18 +485,18 @@ bool LMDBBackend::replaceRRSet(uint32_t domain_id, const DNSName& qname, const Q MDBOutVal key, val; string match =co(domain_id, qname.makeRelative(di.zone), qt.getCode()); if(!cursor.find(match, key, val)) { - do { - cursor.del(); - } while(!cursor.next(key, val) && key.get().rfind(match, 0) == 0); + cursor.del(); } - vector adjustedRRSet; - for(auto rr : rrset) { - rr.content = serializeContent(rr.qtype.getCode(), rr.qname, rr.content); - rr.qname.makeUsRelative(di.zone); - adjustedRRSet.push_back(rr); + if(!rrset.empty()) { + vector adjustedRRSet; + for(auto rr : rrset) { + rr.content = serializeContent(rr.qtype.getCode(), rr.qname, rr.content); + rr.qname.makeUsRelative(di.zone); + adjustedRRSet.push_back(rr); + } + txn->txn->put(txn->db->dbi, match, serToString(adjustedRRSet)); } - txn->txn->put(txn->db->dbi, match, serToString(adjustedRRSet)); if(needCommit) txn->txn->commit();