]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
rfc2136: do lookups in the right zone
authorPeter van Dijk <peter.van.dijk@powerdns.com>
Thu, 16 Aug 2018 17:55:45 +0000 (19:55 +0200)
committerPeter van Dijk <peter.van.dijk@powerdns.com>
Fri, 17 Aug 2018 20:29:14 +0000 (22:29 +0200)
pdns/rfc2136handler.cc

index dafc8bdbc048a036dc3a5a4f0c7e4f958536080d..a945a1307124236129029cf2166c721ed7e8bdf6 100644 (file)
@@ -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<DNSResourceRecord> 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);
       }