]> git.ipfire.org Git - thirdparty/pdns.git/commitdiff
rec: Backport 12347 to rec-4.x.8: Use correct logic for isEntryUsable() 12607/head
authorOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 3 Mar 2023 08:14:55 +0000 (09:14 +0100)
committerOtto Moerbeek <otto.moerbeek@open-xchange.com>
Fri, 3 Mar 2023 08:14:55 +0000 (09:14 +0100)
Backport of #12347

pdns/recursor_cache.cc
pdns/recursor_cache.hh

index b4f08cab5f431dfb56f0e4fe27d6e7237e46df7a..2bf5d556e999149ac8419db312aece30ccae5d42 100644 (file)
@@ -418,7 +418,7 @@ time_t MemRecursorCache::get(time_t now, const DNSName& qname, const QType qt, F
         firstIndexIterator = map->d_map.project<OrderedTag>(i);
 
         // When serving stale, we consider expired records
-        if (i->isEntryUsable(now, serveStale)) {
+        if (!i->isEntryUsable(now, serveStale)) {
           moveCacheItemToFront<SequencedTag>(map->d_map, firstIndexIterator);
           continue;
         }
@@ -459,7 +459,7 @@ time_t MemRecursorCache::get(time_t now, const DNSName& qname, const QType qt, F
       firstIndexIterator = map->d_map.project<OrderedTag>(i);
 
       // When serving stale, we consider expired records
-      if (i->isEntryUsable(now, serveStale)) {
+      if (!i->isEntryUsable(now, serveStale)) {
         moveCacheItemToFront<SequencedTag>(map->d_map, firstIndexIterator);
         continue;
       }
index 8d9e2e3a535d3778451c9e746ccaa04f16d0dbf7..91102d99ae2e8fe66f57ab72043f542545d51b2f 100644 (file)
@@ -104,7 +104,7 @@ private:
     bool isEntryUsable(time_t now, bool serveStale) const
     {
       // When serving stale, we consider expired records
-      return d_ttd <= now && !serveStale && d_servedStale == 0;
+      return d_ttd > now || serveStale || d_servedStale != 0;
     }
 
     bool shouldReplace(time_t now, bool auth, vState state, bool refresh);