]> granicus.if.org Git - pdns/commitdiff
due to a previous cleanup, we were storing empty recursive answers in the packet...
authorBert Hubert <bert.hubert@netherlabs.nl>
Tue, 19 Apr 2011 19:55:30 +0000 (19:55 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Tue, 19 Apr 2011 19:55:30 +0000 (19:55 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@2176 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/dnspacket.cc
pdns/packethandler.cc

index 827359f1a1dbcff0768bdd7f5f7eb22ba2c4cb8e..0d37ae4035ee8110e8927f465e6020a3f1258782 100644 (file)
@@ -420,7 +420,7 @@ int DNSPacket::parse(const char *mesg, int length)
 try
 {
   d_rawpacket.assign(mesg,length); 
-
+  d_wrapped=true;
   if(length < 12) { 
     L << Logger::Warning << "Ignoring packet: too short from "
       << getRemote() << endl;
index ab4a8917c778d2fad331b6810edc56c00f303dff..e25b761739b924b88e0570866af47a434c1bb964 100644 (file)
@@ -1183,9 +1183,7 @@ DNSPacket *PacketHandler::questionOrRecurse(DNSPacket *p, bool *shouldRecurse)
 
     // L<<Logger::Warning<<"Query for '"<<p->qdomain<<"' "<<p->qtype.getName()<<" from "<<p->getRemote()<<endl;
     
-    
-    if(p->d.rd && d_doRecursion && DP->recurseFor(p))  // make sure we set ra if rd was set, and we'll do it
-      r->d.ra=true;
+    r->d.ra = (p->d.rd && d_doRecursion && DP->recurseFor(p));  // make sure we set ra if rd was set, and we'll do it
 
     if(p->qtype.getCode()==QType::IXFR) {
       r->setRcode(RCode::NotImp);
@@ -1200,7 +1198,6 @@ DNSPacket *PacketHandler::questionOrRecurse(DNSPacket *p, bool *shouldRecurse)
     
     string target=p->qdomain;
     
-
     if(doVersionRequest(p,r,target)) // catch version.bind requests
       goto sendit;
 
@@ -1216,7 +1213,9 @@ DNSPacket *PacketHandler::questionOrRecurse(DNSPacket *p, bool *shouldRecurse)
     }
     
     if(!getAuth(p, &sd, target, 0)) {
+      DLOG(L<<Logger::Error<<"We have no authority over zone '"<<target<<"'"<<endl);
       if(r->d.ra) {
+        DLOG(L<<Logger::Error<<"Recursion is available for this remote, doing that"<<endl);
         *shouldRecurse=true;
         delete r;
         return 0;