diff options
Diffstat (limited to 'services/cache/dns.c')
| -rw-r--r-- | services/cache/dns.c | 7 | 
1 files changed, 7 insertions, 0 deletions
diff --git a/services/cache/dns.c b/services/cache/dns.c index e14e636dbfd0..84db7a77884c 100644 --- a/services/cache/dns.c +++ b/services/cache/dns.c @@ -795,6 +795,12 @@ dns_cache_lookup(struct module_env* env,  		dname_remove_label(&k.qname, &k.qname_len);  		h = query_info_hash(&k, flags);  		e = slabhash_lookup(env->msg_cache, h, &k, 0); +		if(!e && k.qtype != LDNS_RR_TYPE_NS && +			env->cfg->qname_minimisation) { +			k.qtype = LDNS_RR_TYPE_NS; +			h = query_info_hash(&k, flags); +			e = slabhash_lookup(env->msg_cache, h, &k, 0); +		}  		if(e) {  			struct reply_info* data = (struct reply_info*)e->data;  			struct dns_msg* msg; @@ -810,6 +816,7 @@ dns_cache_lookup(struct module_env* env,  			}  			lock_rw_unlock(&e->lock);  		} +		k.qtype = qtype;  	}  	/* fill common RR types for ANY response to avoid requery */  | 
