From: Peter van Dijk Date: Thu, 16 Aug 2018 17:55:45 +0000 (+0200) Subject: rfc2136: do lookups in the right zone X-Git-Tag: dnsdist-1.3.3~151^2~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f1e5fdc732aca18205108e7a2d2e6c5200e3b896;p=thirdparty%2Fpdns.git rfc2136: do lookups in the right zone --- diff --git a/pdns/rfc2136handler.cc b/pdns/rfc2136handler.cc index dafc8bdbc0..a945a13071 100644 --- a/pdns/rfc2136handler.cc +++ b/pdns/rfc2136handler.cc @@ -33,7 +33,7 @@ int PacketHandler::checkUpdatePrerequisites(const DNSRecord *rr, DomainInfo *di) bool foundRecord=false; DNSResourceRecord rec; - di->backend->lookup(QType(QType::ANY), rr->d_name); + di->backend->lookup(QType(QType::ANY), rr->d_name, 0, di->id); while(di->backend->get(rec)) { if (!rec.qtype.getCode()) continue; @@ -171,7 +171,7 @@ uint PacketHandler::performUpdate(const string &msgPrefix, const DNSRecord *rr, bool foundRecord = false; - di->backend->lookup(rrType, rr->d_name); + di->backend->lookup(rrType, rr->d_name, 0, di->id); while (di->backend->get(rec)) { rrset.push_back(rec); foundRecord = true; @@ -289,7 +289,7 @@ uint PacketHandler::performUpdate(const string &msgPrefix, const DNSRecord *rr, break; bool foundShorter = false; - di->backend->lookup(QType(QType::ANY), shorter); + di->backend->lookup(QType(QType::ANY), shorter, 0, di->id); while (di->backend->get(rec)) { if (rec.qname == rr->d_name && rec.qtype == QType::DS) fixDS = true; @@ -444,7 +444,7 @@ uint PacketHandler::performUpdate(const string &msgPrefix, const DNSRecord *rr, } // end of NSEC3PARAM delete block - di->backend->lookup(rrType, rr->d_name); + di->backend->lookup(rrType, rr->d_name, 0, di->id); while(di->backend->get(rec)) { if (rr->d_class == QClass::ANY) { // 3.4.2.3 if (rec.qname == di->zone && (rec.qtype == QType::NS || rec.qtype == QType::SOA)) // Never delete all SOA and NS's @@ -860,7 +860,7 @@ int PacketHandler::processUpdate(DNSPacket *p) { rrVector_t *vec = &preRRSet->second; DNSResourceRecord rec; - di.backend->lookup(QType(QType::ANY), rrSet.first); + di.backend->lookup(QType(QType::ANY), rrSet.first, 0, di.id); uint16_t foundRR=0, matchRR=0; while (di.backend->get(rec)) { if (rec.qtype == rrSet.second) { @@ -958,7 +958,7 @@ int PacketHandler::processUpdate(DNSPacket *p) { } for (const auto &rr : cnamesToAdd) { DNSResourceRecord rec; - di.backend->lookup(QType(QType::ANY), rr->d_name); + di.backend->lookup(QType(QType::ANY), rr->d_name, 0, di.id); while (di.backend->get(rec)) { if (rec.qtype != QType::CNAME && rec.qtype != QType::RRSIG) { // leave database handle in a consistent state @@ -973,7 +973,7 @@ int PacketHandler::processUpdate(DNSPacket *p) { } for (const auto &rr : nonCnamesToAdd) { DNSResourceRecord rec; - di.backend->lookup(QType(QType::CNAME), rr->d_name); + di.backend->lookup(QType(QType::CNAME), rr->d_name, 0, di.id); while (di.backend->get(rec)) { if (rec.qtype == QType::CNAME && rr->d_type != QType::RRSIG) { // leave database handle in a consistent state @@ -989,7 +989,7 @@ int PacketHandler::processUpdate(DNSPacket *p) { if (nsRRtoDelete.size()) { vector nsRRInZone; DNSResourceRecord rec; - di.backend->lookup(QType(QType::NS), di.zone); + di.backend->lookup(QType(QType::NS), di.zone, 0, di.id); while (di.backend->get(rec)) { nsRRInZone.push_back(rec); }