X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fresolve%2Fresolved-dns-cache.c;h=40fb6c39844c484ef0888978c55167dd0142670f;hb=bd8f65387673e29f46136a4ed172097035002c23;hp=7359dfa271973272637ca15f050b6e2538df090c;hpb=0ec7c46eed06269edf80121ec53f1eba2e2870d4;p=elogind.git diff --git a/src/resolve/resolved-dns-cache.c b/src/resolve/resolved-dns-cache.c index 7359dfa27..40fb6c398 100644 --- a/src/resolve/resolved-dns-cache.c +++ b/src/resolve/resolved-dns-cache.c @@ -153,7 +153,7 @@ void dns_cache_prune(DnsCache *c) { break; if (t <= 0) - t = now(CLOCK_MONOTONIC); + t = now(CLOCK_BOOTTIME); if (i->until > t) break; @@ -320,6 +320,8 @@ static int dns_cache_put_negative(DnsCache *c, DnsResourceKey *key, int rcode, u return 0; if (key->type == DNS_TYPE_ANY) return 0; + if (soa_ttl <= 0) + return 0; if (!IN_SET(rcode, DNS_RCODE_SUCCESS, DNS_RCODE_NXDOMAIN)) return 0; @@ -376,7 +378,7 @@ int dns_cache_put(DnsCache *c, DnsQuestion *q, int rcode, DnsAnswer *answer, uns dns_cache_make_space(c, answer->n_rrs + q->n_keys); if (timestamp <= 0) - timestamp = now(CLOCK_MONOTONIC); + timestamp = now(CLOCK_BOOTTIME); /* Second, add in positive entries for all contained RRs */ for (i = 0; i < MIN(max_rrs, answer->n_rrs); i++) {