diff options
author | Dag-Erling Smørgrav <des@FreeBSD.org> | 2018-05-12 11:56:38 +0000 |
---|---|---|
committer | Dag-Erling Smørgrav <des@FreeBSD.org> | 2018-05-12 11:56:38 +0000 |
commit | 197f1a0fe3e81cde0cd25a3a1f37ebedf9a99488 (patch) | |
tree | 9a121ad4cef31a32608c065400c31246d549c0dc /iterator/iter_scrub.c | |
parent | b5c63b395d5df7ff6ee4d41a7dfecd938d894037 (diff) |
Notes
Diffstat (limited to 'iterator/iter_scrub.c')
-rw-r--r-- | iterator/iter_scrub.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/iterator/iter_scrub.c b/iterator/iter_scrub.c index 1bee85c0b991..12580dcdb539 100644 --- a/iterator/iter_scrub.c +++ b/iterator/iter_scrub.c @@ -503,6 +503,24 @@ scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, continue; } } + /* if this is type DS and we query for type DS we just got + * a referral answer for our type DS query, fix packet */ + if(rrset->type==LDNS_RR_TYPE_DS && + qinfo->qtype == LDNS_RR_TYPE_DS && + dname_pkt_compare(pkt, qinfo->qname, rrset->dname) == 0) { + rrset->section = LDNS_SECTION_ANSWER; + msg->ancount = rrset->rr_count + rrset->rrsig_count; + msg->nscount = 0; + msg->arcount = 0; + msg->an_rrsets = 1; + msg->ns_rrsets = 0; + msg->ar_rrsets = 0; + msg->rrset_count = 1; + msg->rrset_first = rrset; + msg->rrset_last = rrset; + rrset->rrset_all_next = NULL; + return 1; + } mark_additional_rrset(pkt, msg, rrset); prev = rrset; rrset = rrset->rrset_all_next; |