if a query ends up failing so badly we want to reprime the root, do so, but abort...
authorbert hubert <bert.hubert@netherlabs.nl>
Tue, 6 Jan 2015 14:28:25 +0000 (15:28 +0100)
committerbert hubert <bert.hubert@netherlabs.nl>
Tue, 6 Jan 2015 14:28:25 +0000 (15:28 +0100)
pdns/syncres.cc

index d10e04922454bab0e1fb44e8ad357f0a5527ba87..e174fbb47fabe18b090e936028ce0cd7b04fb32f 100644 (file)
@@ -570,14 +570,17 @@ void SyncRes::getBestNSFromCache(const string &qname, set<DNSResourceRecord>&bes
           bestns.clear();
         }
         else {
-          beenthere.insert(answer);
+         beenthere.insert(answer);
           LOG(prefix<<qname<<": We have NS in cache for '"<<subdomain<<"' (flawedNSSet="<<*flawedNSSet<<")"<<endl);
           return;
         }
       }
     }
     LOG(prefix<<qname<<": no valid/useful NS in cache for '"<<subdomain<<"'"<<endl);
-    if(subdomain==".") { primeHints(); }
+    if(subdomain==".") { 
+      primeHints(); 
+      throw ImmediateServFailException("query ended up doubting the root, reprimed");
+    }
   }while(chopOffDotted(subdomain));
 }