]> 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:19:19 +0000 (13:19 +1100)
                        [RT #38371]

(cherry picked from commit 22e3e00ac95ec1ba89200c5d0e05670ed5ad8fef)

CHANGES
lib/dns/rbtdb.c

diff --git a/CHANGES b/CHANGES
index f036f900eeee03156b6d0e93665c8332e78427d6..56a2d3bf1edf94f5952bfab2f63ba7bc6945af92 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4042.  [bug]           zone.c:iszonesecure was being called too late.
+                       [RT #38371]
+
 4039.  [cleanup]       Cleaned up warnings from gcc -Wshadow. [RT #37381]
 
 4038.  [bug]           Add 'rpz' flag to node and use it to determine whether
index 69162d74583441cee230ab2f941d404be711c5c9..493406c7edf3f09453918f809a51ce5a1912a785 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,