]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
2790. [bug] Handle DS queries to stub zones.
authorMark Andrews <marka@isc.org>
Thu, 26 Nov 2009 03:40:20 +0000 (03:40 +0000)
committerMark Andrews <marka@isc.org>
Thu, 26 Nov 2009 03:40:20 +0000 (03:40 +0000)
CHANGES
lib/dns/rbtdb.c

diff --git a/CHANGES b/CHANGES
index 2c92d268a4e3924baae69f0173c1916d3c544c34..f68ed9ab466add5d28d96db7b86255d98336a559 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,5 @@
+2790.  [bug]           Handle DS queries to stub zones.
+
 2786.  [bug]           Additional could be promoted to answer. [RT #20663]
 
 2784.  [bug]           TC was not always being set when required glue was
index 4ad10881a50c801ce664e16a6f6d4f07a645b01d..6e02c2fb2a8a993d29da9120eeb6cdf7f310a962 100644 (file)
@@ -15,7 +15,7 @@
  * PERFORMANCE OF THIS SOFTWARE.
  */
 
-/* $Id: rbtdb.c,v 1.248.12.20 2009/11/25 02:32:05 marka Exp $ */
+/* $Id: rbtdb.c,v 1.248.12.21 2009/11/26 03:40:20 marka Exp $ */
 
 /*! \file */
 
@@ -3097,12 +3097,18 @@ zone_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
        } else {
                /*
                 * The node may be a zone cut itself.  If it might be one,
-                * make sure we check for it later.
+                * make sure we check for it later. 
+                *
+                * DS records live above the zone cut in ordinary zone so
+                * we want to ignore any referral.
+                *
+                * Stub zones don't have anything "above" the delgation so
+                * we always return a referral.
                 */
                if (node->find_callback &&
-                   (node != search.rbtdb->origin_node ||
-                    IS_STUB(search.rbtdb)) &&
-                   !dns_rdatatype_atparent(type))
+                   ((node != search.rbtdb->origin_node &&
+                     !dns_rdatatype_atparent(type)) ||
+                    IS_STUB(search.rbtdb)))
                        maybe_zonecut = ISC_TRUE;
        }