diff options
Diffstat (limited to 'src/resolve/resolved-dns-cache.c')
-rw-r--r-- | src/resolve/resolved-dns-cache.c | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/src/resolve/resolved-dns-cache.c b/src/resolve/resolved-dns-cache.c index 23cd662fb8..99dec28a46 100644 --- a/src/resolve/resolved-dns-cache.c +++ b/src/resolve/resolved-dns-cache.c @@ -228,11 +228,7 @@ void dns_cache_prune(DnsCache *c) { static int dns_cache_item_prioq_compare_func(const void *a, const void *b) { const DnsCacheItem *x = a, *y = b; - if (x->until < y->until) - return -1; - if (x->until > y->until) - return 1; - return 0; + return CMP(x->until, y->until); } static int dns_cache_init(DnsCache *c) { @@ -680,13 +676,8 @@ int dns_cache_put( /* Second, add in positive entries for all contained RRs */ DNS_ANSWER_FOREACH_FULL(rr, ifindex, flags, answer) { - if ((flags & DNS_ANSWER_CACHEABLE) == 0) - continue; - - r = rr_eligible(rr); - if (r < 0) - return r; - if (r == 0) + if ((flags & DNS_ANSWER_CACHEABLE) == 0 || + !rr_eligible(rr)) continue; r = dns_cache_put_positive( @@ -792,7 +783,7 @@ static DnsCacheItem *dns_cache_get_by_key_follow_cname_dname_nsec(DnsCache *c, D if (dns_type_may_redirect(k->type)) { /* Check if we have a CNAME record instead */ i = hashmap_get(c->by_key, &DNS_RESOURCE_KEY_CONST(k->class, DNS_TYPE_CNAME, n)); - if (i) + if (i && i->type != DNS_CACHE_NODATA) return i; /* OK, let's look for cached DNAME records. */ @@ -801,7 +792,7 @@ static DnsCacheItem *dns_cache_get_by_key_follow_cname_dname_nsec(DnsCache *c, D return NULL; i = hashmap_get(c->by_key, &DNS_RESOURCE_KEY_CONST(k->class, DNS_TYPE_DNAME, n)); - if (i) + if (i && i->type != DNS_CACHE_NODATA) return i; /* Jump one label ahead */ |