]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
use d_negcache_ttl for negative caching 3036/head
authorKees Monshouwer <mind04@monshouwer.org>
Tue, 22 Sep 2015 15:17:48 +0000 (17:17 +0200)
committerPieter Lexis <pieter.lexis@powerdns.com>
Tue, 15 Dec 2015 08:45:21 +0000 (09:45 +0100)
pdns/ueberbackend.cc

index d91c7c81620ffc1935c0e9fd7151bd937be165ef..4358e79381e79af756304da1ac4c609e4b3e0824 100644 (file)
@@ -256,7 +256,7 @@ bool UeberBackend::getAuth(DNSPacket *p, SOAData *sd, const DNSName &target)
   // 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)) {
       DNSName subdomain(target);
       int cstat, loops = 0;
       do {
@@ -266,7 +266,7 @@ bool UeberBackend::getAuth(DNSPacket *p, SOAData *sd, const DNSName &target)
 
         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;
@@ -283,7 +283,7 @@ bool UeberBackend::getAuth(DNSPacket *p, SOAData *sd, const DNSName &target)
 
           if ( p->qtype != QType::DS || best_match_len < (int)target.countLabels())
             break;
-        } else if (cstat==0) {
+        } else if (cstat==0 && d_negcache_ttl) {
           negCacheMap[subdomain]=1;
         } else
           negCacheMap[subdomain]=0;