diff --git a/lib/dns/rbtdb.c b/lib/dns/rbtdb.c index 37bd522ef1..87ef54fb25 100644 --- a/lib/dns/rbtdb.c +++ b/lib/dns/rbtdb.c @@ -3136,7 +3136,7 @@ bind_rdataset(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node, rdatasetheader_t *header, * (these records should not be cached anyway). */ - if (KEEPSTALE(rbtdb) && stale_ttl > now) { + if (!ZEROTTL(header) && KEEPSTALE(rbtdb) && stale_ttl > now) { stale = true; } else { /* @@ -3152,6 +3152,7 @@ bind_rdataset(dns_rbtdb_t *rbtdb, dns_rbtnode_t *node, rdatasetheader_t *header, rdataset->type = RBTDB_RDATATYPE_BASE(header->type); rdataset->covers = RBTDB_RDATATYPE_EXT(header->type); rdataset->ttl = header->rdh_ttl - now; + rdataset->ttl = !ZEROTTL(header) ? header->rdh_ttl - now : 0; rdataset->trust = header->trust; if (NEGATIVE(header)) {