]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4042. [bug] zone.c:iszonesecure was being called too late.
authorMark Andrews <marka@isc.org>
Wed, 21 Jan 2015 02:18:30 +0000 (13:18 +1100)
committerMark Andrews <marka@isc.org>
Wed, 21 Jan 2015 02:18:30 +0000 (13:18 +1100)
                        [RT #38371]

CHANGES
lib/dns/rbtdb.c

diff --git a/CHANGES b/CHANGES
index a85652202fa018fb73fb1bea18619d4afea425d9..7a9255a541817d8ea99c8f7e1d29e3ca4485b516 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4042.  [bug]           zone.c:iszonesecure was being called too late.
+                       [RT #38371]
+
 4041.  [func]          TCP sockets can now be shared while connecting.
                        (This will be used to enable client-side support
                        of pipelined queries.) [RT #38231]
index a48bf25388b3eb5f7c51c545bec5bd27a06f31b6..65228dca1fad10c4c8ac90b67c72d843bb0221d8 100644 (file)
@@ -2378,7 +2378,6 @@ setnsec3parameters(dns_db_t *db, rbtdb_version_t *version) {
        unsigned int count, length;
        dns_rbtdb_t *rbtdb = (dns_rbtdb_t *)db;
 
-       RWLOCK(&rbtdb->tree_lock, isc_rwlocktype_read);
        version->havensec3 = ISC_FALSE;
        node = rbtdb->origin_node;
        NODE_LOCK(&(rbtdb->node_locks[node->locknum].lock),
@@ -2455,7 +2454,6 @@ setnsec3parameters(dns_db_t *db, rbtdb_version_t *version) {
  unlock:
        NODE_UNLOCK(&(rbtdb->node_locks[node->locknum].lock),
                    isc_rwlocktype_read);
-       RWUNLOCK(&rbtdb->tree_lock, isc_rwlocktype_read);
 }
 
 static void
@@ -2576,6 +2574,11 @@ closeversion(dns_db_t *db, dns_dbversion_t **versionp, isc_boolean_t commit) {
                                           cleanup_version->changed_list,
                                           link);
                        }
+                       /*
+                        * Update the zone's secure status.
+                        */
+                       if (!IS_CACHE(rbtdb))
+                               iszonesecure(db, version, rbtdb->origin_node);
                        /*
                         * Become the current version.
                         */
@@ -2654,12 +2657,6 @@ closeversion(dns_db_t *db, dns_dbversion_t **versionp, isc_boolean_t commit) {
        least_serial = rbtdb->least_serial;
        RBTDB_UNLOCK(&rbtdb->lock, isc_rwlocktype_write);
 
-       /*
-        * Update the zone's secure status.
-        */
-       if (writer && commit && !IS_CACHE(rbtdb))
-               iszonesecure(db, version, rbtdb->origin_node);
-
        if (cleanup_version != NULL) {
                INSIST(EMPTY(cleanup_version->changed_list));
                isc_mem_put(rbtdb->common.mctx, cleanup_version,