52 lines
2.0 KiB
Diff
52 lines
2.0 KiB
Diff
commit 5e989a15b927094a83d0f3a08be0cd559e29d3ff
|
|
Author: wouter <wouter@be551aaa-1e26-0410-a405-d3ace91eadb9>
|
|
Date: Fri Apr 23 09:07:05 2010 +0000
|
|
|
|
- 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.
|
|
|
|
diff --git a/iterator/iter_utils.c b/iterator/iter_utils.c
|
|
index a706e6b..9082055 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 e8345c8..c7cdbc8 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
|