]> granicus.if.org Git - pdns/commitdiff
don't drop aa on a cname out of bailiwick
authorBert Hubert <bert.hubert@netherlabs.nl>
Tue, 19 Apr 2011 07:42:53 +0000 (07:42 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Tue, 19 Apr 2011 07:42:53 +0000 (07:42 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@2170 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/packethandler.cc

index 4c44638fd5757c787497750f36932ce141fe2314..ab4a8917c778d2fad331b6810edc56c00f303dff 100644 (file)
@@ -418,13 +418,12 @@ int PacketHandler::doAdditionalProcessingAndDropAA(DNSPacket *p, DNSPacket *r, c
       crrs.push_back(**i);
 
     // we now have a copy, push_back on packet might reallocate!
-
     for(vector<DNSResourceRecord>::const_iterator i=crrs.begin();
         i!=crrs.end();
         ++i) {
       
       if(r->d.aa && !i->qname.empty() && i->qtype.getCode()==QType::NS && !B.getSOA(i->qname,sd,p)) { // drop AA in case of non-SOA-level NS answer, except for root referral
-        r->d.aa=false;
+        r->setA(false);
         //     i->d_place=DNSResourceRecord::AUTHORITY; // XXX FIXME
       }
 
@@ -1222,8 +1221,8 @@ DNSPacket *PacketHandler::questionOrRecurse(DNSPacket *p, bool *shouldRecurse)
         delete r;
         return 0;
       }
-       
-      r->setA(false);
+      if(!retargetcount)  // if our initial CNAME was a hit, don't drop A
+        r->setA(false);
       if(::arg().mustDo("send-root-referral")) {
         DLOG(L<<Logger::Warning<<"Adding root-referral"<<endl);
         addRootReferral(r);