]> granicus.if.org Git - pdns/commitdiff
use d_negcache_ttl for negative caching
authorKees Monshouwer <mind04@monshouwer.org>
Tue, 22 Sep 2015 15:17:48 +0000 (17:17 +0200)
committermind04 <mind04@monshouwer.org>
Thu, 1 Oct 2015 14:57:30 +0000 (16:57 +0200)
pdns/ueberbackend.cc

index 0a3d4f2ca04b83cdb136b6505c4a44968b055c75..a2aa6657bc5153edd22014659008b64f71fd3a52 100644 (file)
@@ -283,7 +283,7 @@ bool UeberBackend::getAuth(DNSPacket *p, SOAData *sd, const string &target, int
   // If not special case of caching explicitly disabled (sd->db = -1), first
   // find the best match from the cache. If DS then we need to find parent so
   // dont bother with caching as it confuses matters.
-  if( sd->db != (DNSBackend *)-1 && d_cache_ttl ) {
+  if( sd->db != (DNSBackend *)-1 && (d_cache_ttl || d_negcache_ttl)) {
       string subdomain(target);
       int cstat, loops = 0;
       do {
@@ -293,7 +293,7 @@ bool UeberBackend::getAuth(DNSPacket *p, SOAData *sd, const string &target, int
 
         cstat = cacheHas(d_question,d_answers);
 
-        if(cstat==1 && !d_answers.empty()) {
+        if(cstat==1 && !d_answers.empty() && d_cache_ttl) {
           fillSOAData(d_answers[0].content,*sd);
           sd->domain_id = d_answers[0].domain_id;
           sd->ttl = d_answers[0].ttl;
@@ -310,7 +310,7 @@ bool UeberBackend::getAuth(DNSPacket *p, SOAData *sd, const string &target, int
 
           if ( p->qtype != QType::DS || best_match_len < (int)target.length())
             break;
-        } else if (cstat==0) {
+        } else if (cstat==0 && d_negcache_ttl) {
           negCacheMap[subdomain]=1;
         } else
           negCacheMap[subdomain]=0;
@@ -332,7 +332,7 @@ bool UeberBackend::getAuth(DNSPacket *p, SOAData *sd, const string &target, int
     }
   }
 
-  if( sd->db != (DNSBackend *)-1 && d_cache_ttl) {
+  if( sd->db != (DNSBackend *)-1 && d_negcache_ttl) {
     string shorter(target);
 
     d_question.qtype=QType::SOA;