]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix resolution for domains like safesvc.com.cn. If the iterator
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 19 May 2010 12:59:27 +0000 (12:59 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Wed, 19 May 2010 12:59:27 +0000 (12:59 +0000)
         can not recurse further and it finds the delegation in a state
         where it would otherwise have rejected it outhand if so received
         from a cache lookup, then it can try to ask higherup (with loop
         protection).
       - Fix comments in iter_utils:dp_is_useless.

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

doc/Changelog
iterator/iter_utils.c
testdata/iter_dp_turnsuseless.rpl [new file with mode: 0644]
testdata/nomem_cnametopos.rpl

index 5616ab8ffe6008e192da27cdb7b3c34235bcd14d..012ece3ba81707f5738fd7e6e70f033d2f6b3254 100644 (file)
@@ -1,3 +1,11 @@
+19 May 2010: Wouter
+       - Fix resolution for domains like safesvc.com.cn.  If the iterator
+         can not recurse further and it finds the delegation in a state
+         where it would otherwise have rejected it outhand if so received
+         from a cache lookup, then it can try to ask higherup (with loop
+         protection).
+       - Fix comments in iter_utils:dp_is_useless.
+
 18 May 2010: Wouter
        - Fix various compiler warnings from the clang llvm compiler.
        - iana portlist updated.
index 3a75d03493c434b97fe3cf6ddff543bb2e29e426..ee3e7e7714b44613b3345e8e66e22f801d7b8180 100644 (file)
@@ -522,11 +522,11 @@ iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags,
 {
        struct delegpt_ns* ns;
        /* check:
-        *      o RD qflag is off.
+        *      o RD qflag is on.
         *      o no addresses are provided.
         *      o all NS items are required glue.
         * OR
-        *      o RD qflag is off.
+        *      o RD qflag is on.
         *      o no addresses are provided.
         *      o the query is for one of the nameservers in dp,
         *        and that nameserver is a glue-name for this dp.
diff --git a/testdata/iter_dp_turnsuseless.rpl b/testdata/iter_dp_turnsuseless.rpl
new file mode 100644 (file)
index 0000000..9d0c355
--- /dev/null
@@ -0,0 +1,166 @@
+; config options
+server:
+       target-fetch-policy: "0 0 0 0 0"
+
+stub-zone:
+       name: "."
+       stub-addr: 193.0.14.129         # K.ROOT-SERVERS.NET.
+CONFIG_END
+
+SCENARIO_BEGIN Test parent-child dichotomy where dp turns useless
+
+; K.ROOT-SERVERS.NET.
+RANGE_BEGIN 0 100
+       ADDRESS 193.0.14.129 
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+. IN NS
+SECTION ANSWER
+. IN NS        K.ROOT-SERVERS.NET.
+SECTION ADDITIONAL
+K.ROOT-SERVERS.NET.    IN      A       193.0.14.129
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode subdomain
+ADJUST copy_id copy_query
+REPLY QR NOERROR
+SECTION QUESTION
+com. IN NS
+SECTION AUTHORITY
+com.   IN NS   a.gtld-servers.net.
+SECTION ADDITIONAL
+a.gtld-servers.net.    IN      A       192.5.6.30
+ENTRY_END
+
+; data for ns-crap does not exist.
+ENTRY_BEGIN
+MATCH opcode qname
+ADJUST copy_id copy_query
+REPLY QR NXDOMAIN
+SECTION QUESTION
+ns-crap. IN NS
+SECTION AUTHORITY
+; very short TTL so it'll expire.
+. 2 SOA . . 1 2 3 4 5
+SECTION ADDITIONAL
+ENTRY_END
+RANGE_END
+
+; a.gtld-servers.net.
+RANGE_BEGIN 0 100
+       ADDRESS 192.5.6.30
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+com. IN NS
+SECTION ANSWER
+com.   IN NS   a.gtld-servers.net.
+SECTION ADDITIONAL
+a.gtld-servers.net.    IN      A       192.5.6.30
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode subdomain
+ADJUST copy_id copy_query
+REPLY QR NOERROR
+SECTION QUESTION
+example.com. IN NS
+SECTION AUTHORITY
+; very short TTL so it can time out quickly.
+example.com.   2 IN NS ns.example.com.
+SECTION ADDITIONAL
+ns.example.com.                IN      A       1.2.3.4
+ENTRY_END
+RANGE_END
+
+; ns.example.com.
+RANGE_BEGIN 0 100
+       ADDRESS 1.2.3.4
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+example.com. IN NS
+SECTION ANSWER
+example.com.   IN NS   ns-crap.
+SECTION ADDITIONAL
+ENTRY_END
+
+ENTRY_BEGIN
+MATCH opcode qtype qname
+ADJUST copy_id
+REPLY QR NOERROR
+SECTION QUESTION
+www.example.com. IN A
+SECTION ANSWER
+www.example.com. 2 IN A        10.20.30.40
+ENTRY_END
+RANGE_END
+
+STEP 1 QUERY
+ENTRY_BEGIN
+REPLY RD
+SECTION QUESTION
+example.com. IN NS
+ENTRY_END
+
+STEP 10 CHECK_ANSWER
+ENTRY_BEGIN
+MATCH all
+REPLY QR RD RA NOERROR
+SECTION QUESTION
+example.com. IN NS
+SECTION ANSWER
+example.com.   IN NS   ns-crap.
+SECTION AUTHORITY
+SECTION ADDITIONAL
+ENTRY_END
+
+STEP 20 QUERY
+ENTRY_BEGIN
+REPLY RD
+SECTION QUESTION
+www.example.com. IN A
+ENTRY_END
+
+STEP 30 CHECK_ANSWER
+ENTRY_BEGIN
+MATCH all
+REPLY QR RD RA NOERROR
+SECTION QUESTION
+www.example.com. IN A
+SECTION ANSWER
+www.example.com. 2 IN A        10.20.30.40
+ENTRY_END
+
+; parent side stuff times out
+STEP 40 TIME_PASSES ELAPSE 5.0
+
+; actual retry logic must fire
+STEP 50 QUERY
+ENTRY_BEGIN
+REPLY RD
+SECTION QUESTION
+www.example.com. IN A
+ENTRY_END
+
+STEP 60 CHECK_ANSWER
+ENTRY_BEGIN
+MATCH all
+REPLY QR RD RA NOERROR
+SECTION QUESTION
+www.example.com. IN A
+SECTION ANSWER
+www.example.com. 2 IN A        10.20.30.40
+ENTRY_END
+
+
+
+SCENARIO_END
index 93b6a3952a175665fdc334d4dcec81d90cc5ea5b..df3a4bf418d1b01818a0e6c84261bb174d52d64d 100644 (file)
@@ -6,6 +6,7 @@ server:
        val-override-date: "20070916134226"
        msg-cache-size: 8
        rrset-cache-size: 8
+       target-fetch-policy: "0 0 0 0 0"
 
 stub-zone:
        name: "."