]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
1732. [bug] 'rrset-order name "*"' wasn't being applied to ".".
authorMark Andrews <marka@isc.org>
Tue, 5 Oct 2004 04:38:17 +0000 (04:38 +0000)
committerMark Andrews <marka@isc.org>
Tue, 5 Oct 2004 04:38:17 +0000 (04:38 +0000)
                        [RT #12467]

CHANGES
bin/named/server.c

diff --git a/CHANGES b/CHANGES
index 6384cbff797091b1ef3d7aa7c24a32a4acea58f5..3bab13866024b034b4e50d54ccb7c6c6065c392d 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -13,7 +13,8 @@
 1733.  [bug]           Return non-zero exit status on initial load failure.
                        [RT #12658]
 
-1732.  [placeholder]   rt12467
+1732.  [bug]           'rrset-order name "*"' wasn't being applied to ".".
+                       [RT #12467]
 
 1731.  [port]          darwin: relax version test in ifconfig.sh.
                        [RT #12581]
index ac3683419b403624e7838bb09ae5a27fa52f9ae6..7688400d1bf763cfd4ea8e2f73724d6a56a643ef 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: server.c,v 1.429 2004/09/29 06:45:37 marka Exp $ */
+/* $Id: server.c,v 1.430 2004/10/05 04:38:17 marka Exp $ */
 
 #include <config.h>
 
@@ -522,6 +522,7 @@ configure_order(dns_order_t *order, cfg_obj_t *ent) {
        const char *str;
        isc_buffer_t b;
        isc_result_t result;
+       isc_boolean_t addroot;
 
        result = ns_config_getclass(cfg_tuple_get(ent, "class"),
                                    dns_rdataclass_any, &rdclass);
@@ -538,11 +539,12 @@ configure_order(dns_order_t *order, cfg_obj_t *ent) {
                str = cfg_obj_asstring(obj);
        else
                str = "*";
+       addroot = ISC_TF(strcmp(str, "*") == 0);
        isc_buffer_init(&b, str, strlen(str));
        isc_buffer_add(&b, strlen(str));
        dns_fixedname_init(&fixed);
        result = dns_name_fromtext(dns_fixedname_name(&fixed), &b,
-                                 dns_rootname, ISC_FALSE, NULL);
+                                  dns_rootname, ISC_FALSE, NULL);
        if (result != ISC_R_SUCCESS)
                return (result);
 
@@ -558,6 +560,18 @@ configure_order(dns_order_t *order, cfg_obj_t *ent) {
        else
                INSIST(0);
 
+       /*
+        * "*" should match everything including the root (BIND 8 compat).
+        * As dns_name_matcheswildcard(".", "*.") returns FALSE add a
+        * explict entry for "." when the name is "*".
+        */
+       if (addroot) {
+               result = dns_order_add(order, dns_rootname,
+                                      rdtype, rdclass, mode);
+               if (result != ISC_R_SUCCESS)
+                       return (result);
+       }
+
        return (dns_order_add(order, dns_fixedname_name(&fixed),
                              rdtype, rdclass, mode));
 }