]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix bug#321: resolution of rs.ripe.net artifacts with 0x20.
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 19 Aug 2010 13:00:21 +0000 (13:00 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Thu, 19 Aug 2010 13:00:21 +0000 (13:00 +0000)
         Delegpt structures checked for duplicates always.
         No more nameserver lookups generated when depth is full anyway.

git-svn-id: file:///svn/unbound/trunk@2219 be551aaa-1e26-0410-a405-d3ace91eadb9

doc/Changelog
iterator/iter_delegpt.c
iterator/iterator.c

index 0aecf4de53dfdd673d6316eb41b22887ff19aedf..65debe1963cdad158b059020e942902f0c51aa71 100644 (file)
@@ -1,3 +1,8 @@
+19 August 2010: Wouter
+       - Fix bug#321: resolution of rs.ripe.net artifacts with 0x20.
+         Delegpt structures checked for duplicates always.
+         No more nameserver lookups generated when depth is full anyway.
+
 18 August 2010: Wouter
        - Fix bug#322: configure does not respect CFLAGS on Solaris.
          Pass CFLAGS="-xO4 -xtarget=generic" on the configure command line
index 28dac7c76ddb0548029722e3b3e51a28e95e293f..33f5bb492f9ee78b86d4ba589a59dfc9bd9b69e7 100644 (file)
@@ -361,10 +361,10 @@ delegpt_from_message(struct dns_msg* msg, struct regional* region)
                        continue;
 
                if(ntohs(s->rk.type) == LDNS_RR_TYPE_A) {
-                       if(!delegpt_add_rrset_A(dp, region, s, 0, 0))
+                       if(!delegpt_add_rrset_A(dp, region, s, 0, 1))
                                return NULL;
                } else if(ntohs(s->rk.type) == LDNS_RR_TYPE_AAAA) {
-                       if(!delegpt_add_rrset_AAAA(dp, region, s, 0, 0))
+                       if(!delegpt_add_rrset_AAAA(dp, region, s, 0, 1))
                                return NULL;
                }
        }
index e61829762772c1dc82bf327adc93618b5cf9b5f1..f170e78b452343c6dad6df532d8f5415c5eaecb5 100644 (file)
@@ -1300,6 +1300,9 @@ query_for_targets(struct module_qstate* qstate, struct iter_qstate* iq,
        int missing;
        int toget = 0;
 
+       if(iq->depth == ie->max_dependency_depth)
+               return 0;
+
        iter_mark_cycle_targets(qstate, iq->dp);
        missing = (int)delegpt_count_missing_targets(iq->dp);
        log_assert(maxtargets != 0); /* that would not be useful */
@@ -1432,6 +1435,10 @@ processLastResort(struct module_qstate* qstate, struct iter_qstate* iq,
                        return 0; /* and wait for them */
                }
        }
+       if(iq->depth == ie->max_dependency_depth) {
+               verbose(VERB_QUERY, "maxdepth and need more nameservers, fail");
+               return error_response_cache(qstate, id, LDNS_RCODE_SERVFAIL);
+       }
        /* mark cycle targets for parent-side lookups */
        iter_mark_pside_cycle_targets(qstate, iq->dp);
        /* see if we can issue queries to get nameserver addresses */