- Fix that qname minimisation does not skip a label when missing

nameserver targets need to be fetched.


git-svn-id: file:///svn/unbound/trunk@5107 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2019-02-08 13:30:51 +00:00
parent 20d57ec58b
commit 429e130768
2 changed files with 20 additions and 0 deletions

View file

@ -1,5 +1,7 @@
7 February 2019: Wouter 7 February 2019: Wouter
- Fix #4206: OpenSSL 1.0.2 hostname verification for FreeBSD 11.2. - Fix #4206: OpenSSL 1.0.2 hostname verification for FreeBSD 11.2.
- Fix that qname minimisation does not skip a label when missing
nameserver targets need to be fetched.
4 February 2019: Wouter 4 February 2019: Wouter
- Fix that log-replies prints the correct name for local-alias - Fix that log-replies prints the correct name for local-alias

View file

@ -2105,6 +2105,8 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
struct delegpt_addr* target; struct delegpt_addr* target;
struct outbound_entry* outq; struct outbound_entry* outq;
int auth_fallback = 0; int auth_fallback = 0;
uint8_t* qout_orig = NULL;
size_t qout_orig_len = 0;
/* NOTE: a request will encounter this state for each target it /* NOTE: a request will encounter this state for each target it
* needs to send a query to. That is, at least one per referral, * needs to send a query to. That is, at least one per referral,
@ -2178,6 +2180,8 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
int labdiff = qchaselabs - int labdiff = qchaselabs -
dname_count_labels(iq->qinfo_out.qname); dname_count_labels(iq->qinfo_out.qname);
qout_orig = iq->qinfo_out.qname;
qout_orig_len = iq->qinfo_out.qname_len;
iq->qinfo_out.qname = iq->qchase.qname; iq->qinfo_out.qname = iq->qchase.qname;
iq->qinfo_out.qname_len = iq->qchase.qname_len; iq->qinfo_out.qname_len = iq->qchase.qname_len;
iq->minimise_count++; iq->minimise_count++;
@ -2330,6 +2334,13 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
/* wait to get all targets, we want to try em */ /* wait to get all targets, we want to try em */
verbose(VERB_ALGO, "wait for all targets for fallback"); verbose(VERB_ALGO, "wait for all targets for fallback");
qstate->ext_state[id] = module_wait_reply; qstate->ext_state[id] = module_wait_reply;
/* undo qname minimise step because we'll get back here
* to do it again */
if(qout_orig && iq->minimise_count > 0) {
iq->minimise_count--;
iq->qinfo_out.qname = qout_orig;
iq->qinfo_out.qname_len = qout_orig_len;
}
return 0; return 0;
} }
/* did we do enough fallback queries already? */ /* did we do enough fallback queries already? */
@ -2463,6 +2474,13 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
iq->num_current_queries); iq->num_current_queries);
qstate->ext_state[id] = module_wait_reply; qstate->ext_state[id] = module_wait_reply;
} }
/* undo qname minimise step because we'll get back here
* to do it again */
if(qout_orig && iq->minimise_count > 0) {
iq->minimise_count--;
iq->qinfo_out.qname = qout_orig;
iq->qinfo_out.qname_len = qout_orig_len;
}
return 0; return 0;
} }