From: Yu Watanabe Date: Mon, 13 Aug 2018 05:32:33 +0000 (+0900) Subject: resolve: do not hit CNAME or DNAME entry in NODATA cache (#9836) X-Git-Tag: v240~839 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3740146a4cbd99883af79e375ee4836206dcea4e;p=thirdparty%2Fsystemd.git resolve: do not hit CNAME or DNAME entry in NODATA cache (#9836) Fixes #9833. --- diff --git a/src/resolve/resolved-dns-cache.c b/src/resolve/resolved-dns-cache.c index 95e9e072c1c..99dec28a466 100644 --- a/src/resolve/resolved-dns-cache.c +++ b/src/resolve/resolved-dns-cache.c @@ -783,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. */ @@ -792,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 */