X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fresolve%2Fresolved-dns-cache.c;h=f7091f07bf4b5c18e1ba949ca6bd4a4fed548f32;hb=9a015429b3bbfe1c2802570c1621e73d6cb57ac3;hp=28a375baed0ab284659eb154b54bc692cdd8ca19;hpb=ddf163393bd93baf39fa7a2c567f6758570cc209;p=elogind.git diff --git a/src/resolve/resolved-dns-cache.c b/src/resolve/resolved-dns-cache.c index 28a375bae..f7091f07b 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; @@ -352,12 +352,16 @@ int dns_cache_put(DnsCache *c, DnsQuestion *q, int rcode, DnsAnswer *answer, uns int r; assert(c); - assert(answer); + assert(q); /* First, delete all matching old RRs, so that we only keep * complete by_key in place. */ for (i = 0; i < q->n_keys; i++) dns_cache_remove(c, q->keys[i]); + + if (!answer) + return 0; + for (i = 0; i < answer->n_rrs; i++) dns_cache_remove(c, answer->rrs[i]->key); @@ -372,7 +376,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++) {