From: Matthijs Mekking Date: Fri, 2 Oct 2020 07:12:23 +0000 (+0200) Subject: Change condition for rndc dumpdb -expired X-Git-Tag: v9.17.6~16^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5614454c3b37ef342f6b413ea671711b399f3901;p=thirdparty%2Fbind9.git Change condition for rndc dumpdb -expired After backporting #1870 to 9.11-S I saw that the condition check there is different than in the main branch. In 9.11-S "stale" can mean stale and serve-stale, or not active (awaiting cleanup). In 9.16 and later versions, "stale" is stale and serve-stale, and "ancient" means not active (awaiting cleanup). An "ancient" RRset is one that is not active (TTL expired) and is not eligble for serve-stale. Update the condition for rndc dumpdb -expired to closer match what is in 9.11-S. --- diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index 3867e96ddce..5c07604956c 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -3144,7 +3144,7 @@ bind_rdataset(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node, rdatasetheader_t *header, rdataset->stale_ttl = (rbtdb->serve_stale_ttl + header->rdh_ttl) - now; rdataset->ttl = 0; - } else if (header->rdh_ttl < now) { + } else if (IS_CACHE(rbtdb) && !ACTIVE(header, now)) { rdataset->attributes |= DNS_RDATASETATTR_ANCIENT; rdataset->stale_ttl = header->rdh_ttl; rdataset->ttl = 0;