]> granicus.if.org Git - pdns/commitdiff
fix up SOA misunderstanding around CNAME referrals from UltraDNS. Thanks to 'marwood...
authorBert Hubert <bert.hubert@netherlabs.nl>
Wed, 9 Jun 2010 21:26:50 +0000 (21:26 +0000)
committerBert Hubert <bert.hubert@netherlabs.nl>
Wed, 9 Jun 2010 21:26:50 +0000 (21:26 +0000)
git-svn-id: svn://svn.powerdns.com/pdns/trunk/pdns@1628 d19b8d6e-7fed-0310-83ef-9ca221ded41b

pdns/syncres.cc

index f24637ed3bdf68f39d0442f14ec97f47710b0e65..146e21af0726825867bb8ab07992d39036f5a5ab 100644 (file)
@@ -1050,18 +1050,22 @@ int SyncRes::doResolveAt(set<string, CIStringCompare> nameservers, string auth,
         else if(!done && i->d_place==DNSResourceRecord::AUTHORITY && dottedEndsOn(qname,i->qname) && i->qtype.getCode()==QType::SOA && 
            lwr.d_rcode==RCode::NoError) {
           LOG<<prefix<<qname<<": got negative caching indication for '"<< (qname+"|"+i->qtype.getName()+"'") <<endl;
-          if(!newtarget.empty())
-            ret.push_back(*i);
           
-          NegCacheEntry ne;
-          ne.d_qname=i->qname;
-          ne.d_ttd=d_now.tv_sec + min(s_maxnegttl, i->ttl);
-          ne.d_name=qname;
-          ne.d_qtype=qtype;
-          if(qtype.getCode()) {  // prevents us from blacking out a whole domain
-            replacing_insert(t_sstorage->negcache, ne);
+          if(!newtarget.empty()) {
+            LOG<<prefix<<qname<<": Hang on! Got a redirect to '"<<newtarget<<"' already"<<endl;
+          }
+          else {
+            ret.push_back(*i);
+            NegCacheEntry ne;
+            ne.d_qname=i->qname;
+            ne.d_ttd=d_now.tv_sec + min(s_maxnegttl, i->ttl);
+            ne.d_name=qname;
+            ne.d_qtype=qtype;
+            if(qtype.getCode()) {  // prevents us from blacking out a whole domain
+              replacing_insert(t_sstorage->negcache, ne);
+            }
+            negindic=true;
           }
-          negindic=true;
         }
       }