diff --git a/doc/Changelog b/doc/Changelog index 1874a1235..030dc3237 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -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. diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c index a706e6b64..9082055c0 100644 --- a/iterator/iter_utils.c +++ b/iterator/iter_utils.c @@ -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"); diff --git a/iterator/iterator.c b/iterator/iterator.c index e8345c804..c7cdbc876 100644 --- a/iterator/iterator.c +++ b/iterator/iterator.c @@ -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