- Fix to fetch data as last resort more tenaciously. When cycle

targets cause the server selection to believe there are more options
	  when they really are not there, the server selection is reinitiated.
	- Fix fetch from blacklisted dnssec lame servers as last resort.  The
	  servers IP address is then given in validator errors as well.



git-svn-id: file:///svn/unbound/trunk@2089 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
Wouter Wijngaards 2010-04-23 09:07:05 +00:00
parent 109fbe2350
commit 35f3d4ecb1
3 changed files with 21 additions and 1 deletions

View file

@ -1,6 +1,11 @@
23 April 2010: Wouter
- Squelch log message: sendto failed permission denied for
255.255.255.255, it is visible in VERB_DETAIL (verbosity 2).
- Fix to fetch data as last resort more tenaciously. When cycle
targets cause the server selection to believe there are more options
when they really are not there, the server selection is reinitiated.
- Fix fetch from blacklisted dnssec lame servers as last resort. The
servers IP address is then given in validator errors as well.
22 April 2010: Wouter
- tag 1.4.4.

View file

@ -322,9 +322,15 @@ iter_server_selection(struct iter_env* iter_env,
verbose(VERB_ALGO, "selrtt %d", selrtt);
if(selrtt > BLACKLIST_PENALTY) {
if(selrtt-BLACKLIST_PENALTY > USEFUL_SERVER_TOP_TIMEOUT*2) {
verbose(VERB_ALGO, "chase to recursion lame server");
verbose(VERB_ALGO, "chase to "
"blacklisted recursion lame server");
*chase_to_rd = 1;
}
if(selrtt-BLACKLIST_PENALTY > USEFUL_SERVER_TOP_TIMEOUT) {
verbose(VERB_ALGO, "chase to "
"blacklisted dnssec lame server");
*dnssec_expected = 0;
}
} else {
if(selrtt > USEFUL_SERVER_TOP_TIMEOUT*2) {
verbose(VERB_ALGO, "chase to recursion lame server");

View file

@ -1469,6 +1469,15 @@ processQueryTargets(struct module_qstate* qstate, struct iter_qstate* iq,
return error_response(qstate, id,
LDNS_RCODE_SERVFAIL);
}
if(qs == 0 &&
delegpt_count_missing_targets(iq->dp) == 0){
/* it looked like there were missing
* targets, but they did not turn up.
* Try the bad choices again (if any),
* when we get back here missing==0,
* so this is not a loop. */
return 1;
}
iq->num_target_queries += qs;
}
/* Since a target query might have been made, we