]> granicus.if.org Git - pdns/commitdiff
make sure we adjust the SOA record even in ANY queries. Spotted by Marc Laros & other...
authorBert Hubert <bert.hubert@netherlabs.nl>
Fri, 3 Jun 2011 15:11:04 +0000 (15:11 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Fri, 3 Jun 2011 15:11:04 +0000 (15:11 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@2206 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/packethandler.cc

index 2d827aacdcd8d310a5cca4fc9dfc2b189b477d2b..1bcc288ba406de4f3a1a3a93e5e7a556fac56dcd 100644 (file)
@@ -704,7 +704,7 @@ bool PacketHandler::doDNSSECProcessing(DNSPacket *p, DNSPacket *r)
   
   return false;
 }
-
+#if 0
 /* returns 1 if everything is done & ready, 0 if the search should continue, 2 if a 'NO-ERROR' response should be generated */
 int PacketHandler::makeCanonic(DNSPacket *p, DNSPacket *r, string &target)
 {
@@ -787,6 +787,8 @@ int PacketHandler::makeCanonic(DNSPacket *p, DNSPacket *r, string &target)
   return 0;
 }
 
+#endif
+
 /* Semantics:
    
 - only one backend owns the SOA of a zone
@@ -1287,6 +1289,14 @@ DNSPacket *PacketHandler::questionOrRecurse(DNSPacket *p, bool *shouldRecurse)
 
       if(rr.qtype.getCode() == QType::CNAME && p->qtype.getCode() != QType::CNAME) 
         weRedirected=1;
+        
+      if(rr.qtype.getCode() == QType::SOA && pdns_iequals(rr.qname, sd.qname)) { // fix up possible SOA adjustments for this zone
+        rr.content=serializeSOAData(sd);
+        rr.ttl=sd.ttl;
+        rr.domain_id=sd.domain_id;
+        rr.auth = true;
+      }
+      
       rrset.push_back(rr);
     }