]> git.ipfire.org Git - thirdparty/unbound.git/commitdiff
- Fix local-zone type redirect that did not use the query name for
authorWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 23 Apr 2010 14:03:09 +0000 (14:03 +0000)
committerWouter Wijngaards <wouter@nlnetlabs.nl>
Fri, 23 Apr 2010 14:03:09 +0000 (14:03 +0000)
         the answer rrset.

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

doc/Changelog
services/localzone.c
testdata/localdata.rpl

index 23e77dacb96944b14a1ec92927477db6c90c7b9e..b06fb961682ac2423ae73d76daff7cd634a08f1c 100644 (file)
@@ -6,6 +6,8 @@
          when they really are not there, the server selection is reinitiated.
        - Fix fetch from blacklisted dnssec lame servers as last resort.  The
          server's IP address is then given in validator errors as well.
+       - Fix local-zone type redirect that did not use the query name for
+         the answer rrset.
 
 22 April 2010: Wouter
        - tag 1.4.4.
index dba7f3b330a230f483e9e0ee3272358843129d93..b8da77aa6bd3c3c309879e1477d70a48c1f87ec8 100644 (file)
@@ -1040,10 +1040,10 @@ local_data_answer(struct local_zone* z, struct query_info* qinfo,
        if(!lr)
                return 0;
        if(z->type == local_zone_redirect) {
-               /* convert rrset name to zone name; like a wildcard */
+               /* convert rrset name to query name; like a wildcard */
                struct ub_packed_rrset_key r = *lr->rrset;
-               r.rk.dname = z->name;
-               r.rk.dname_len = z->namelen;
+               r.rk.dname = qinfo->qname;
+               r.rk.dname_len = qinfo->qname_len;
                return local_encode(qinfo, edns, buf, temp, &r, 1, 
                        LDNS_RCODE_NOERROR);
        }
index 5bb259efd5900a22f65ec6b998e125a037d62f3c..08aec6d7dd1dfdd87a8d55e3f92a45ff45e936c1 100644 (file)
@@ -30,6 +30,10 @@ server:
        ; refuse zone (error)
        local-zone: "refuse.top." refuse
 
+       ; redirect zone
+       local-zone: "redirect.top." redirect
+       local-data: "redirect.top. A 20.30.40.54"
+
        ; create implicit data in the IN domain as well
        local-data: "a.a.implicit. A 20.30.41.50"
        local-data: "b.a.implicit. A 20.30.42.50"
@@ -318,4 +322,36 @@ www.deny.top. IN A
 ENTRY_END
 ; no answer is checked at exit of testbound.
 
+; redirect zone apex
+STEP 50 QUERY
+ENTRY_BEGIN
+SECTION QUESTION
+redirect.top. IN A
+ENTRY_END
+STEP 51 CHECK_ANSWER
+ENTRY_BEGIN
+MATCH all
+REPLY QR RA AA NOERROR
+SECTION QUESTION
+redirect.top. IN A
+SECTION ANSWER
+redirect.top. IN A 20.30.40.54
+ENTRY_END
+
+; redirect zone
+STEP 52 QUERY
+ENTRY_BEGIN
+SECTION QUESTION
+www.redirect.top. IN A
+ENTRY_END
+STEP 53 CHECK_ANSWER
+ENTRY_BEGIN
+MATCH all
+REPLY QR RA AA NOERROR
+SECTION QUESTION
+www.redirect.top. IN A
+SECTION ANSWER
+www.redirect.top. IN A 20.30.40.54
+ENTRY_END
+
 SCENARIO_END