resolve: do not hit CNAME or DNAME entry in NODATA cache (#9836)

Fixes #9833.
This commit is contained in:
Yu Watanabe 2018-08-13 14:32:33 +09:00 committed by GitHub
parent 5d3bab79e8
commit 3740146a4c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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)) { if (dns_type_may_redirect(k->type)) {
/* Check if we have a CNAME record instead */ /* Check if we have a CNAME record instead */
i = hashmap_get(c->by_key, &DNS_RESOURCE_KEY_CONST(k->class, DNS_TYPE_CNAME, n)); 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; return i;
/* OK, let's look for cached DNAME records. */ /* 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; return NULL;
i = hashmap_get(c->by_key, &DNS_RESOURCE_KEY_CONST(k->class, DNS_TYPE_DNAME, n)); 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; return i;
/* Jump one label ahead */ /* Jump one label ahead */