mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-10 18:40:00 -04:00
2625. [bug] Missing UNLOCK in rbtdb.c. [RT #19865]
This commit is contained in:
parent
3bc4221346
commit
5b7525f51f
2 changed files with 9 additions and 10 deletions
2
CHANGES
2
CHANGES
|
|
@ -1,3 +1,5 @@
|
|||
2625. [bug] Missing UNLOCK in rbtdb.c. [RT #19865]
|
||||
|
||||
2624. [func] 'named-checkconf -p' will print out the parsed
|
||||
configuration. [RT #18871]
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
* PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: rbtdb.c,v 1.276 2009/05/06 22:53:54 jinmei Exp $ */
|
||||
/* $Id: rbtdb.c,v 1.277 2009/07/13 07:02:46 marka Exp $ */
|
||||
|
||||
/*! \file */
|
||||
|
||||
|
|
@ -3546,8 +3546,8 @@ zone_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
|
|||
* We now go looking for rdata...
|
||||
*/
|
||||
|
||||
NODE_LOCK(&(search.rbtdb->node_locks[node->locknum].lock),
|
||||
isc_rwlocktype_read);
|
||||
lock = &search.rbtdb->node_locks[node->locknum].lock;
|
||||
NODE_LOCK(lock, isc_rwlocktype_read);
|
||||
|
||||
found = NULL;
|
||||
foundsig = NULL;
|
||||
|
|
@ -3625,8 +3625,10 @@ zone_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
|
|||
* we are using behave as if it isn't here.
|
||||
*/
|
||||
if (header->type == dns_rdatatype_nsec3 &&
|
||||
!matchparams(header, &search))
|
||||
!matchparams(header, &search)) {
|
||||
NODE_UNLOCK(lock, isc_rwlocktype_read);
|
||||
goto partial_match;
|
||||
}
|
||||
/*
|
||||
* If we found a type we were looking for,
|
||||
* remember it.
|
||||
|
|
@ -3705,7 +3707,6 @@ zone_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
|
|||
* we really have a partial match.
|
||||
*/
|
||||
if (!wild) {
|
||||
lock = &search.rbtdb->node_locks[node->locknum].lock;
|
||||
NODE_UNLOCK(lock, isc_rwlocktype_read);
|
||||
goto partial_match;
|
||||
}
|
||||
|
|
@ -3722,7 +3723,6 @@ zone_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
|
|||
*
|
||||
* Return the delegation.
|
||||
*/
|
||||
lock = &search.rbtdb->node_locks[node->locknum].lock;
|
||||
NODE_UNLOCK(lock, isc_rwlocktype_read);
|
||||
result = setup_delegation(&search, nodep, foundname,
|
||||
rdataset, sigrdataset);
|
||||
|
|
@ -3744,7 +3744,6 @@ zone_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
|
|||
goto node_exit;
|
||||
}
|
||||
|
||||
lock = &search.rbtdb->node_locks[node->locknum].lock;
|
||||
NODE_UNLOCK(lock, isc_rwlocktype_read);
|
||||
result = find_closest_nsec(&search, nodep, foundname,
|
||||
rdataset, sigrdataset,
|
||||
|
|
@ -3829,7 +3828,6 @@ zone_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
|
|||
if (result == DNS_R_GLUE &&
|
||||
(search.options & DNS_DBFIND_VALIDATEGLUE) != 0 &&
|
||||
!valid_glue(&search, foundname, type, node)) {
|
||||
lock = &search.rbtdb->node_locks[node->locknum].lock;
|
||||
NODE_UNLOCK(lock, isc_rwlocktype_read);
|
||||
result = setup_delegation(&search, nodep, foundname,
|
||||
rdataset, sigrdataset);
|
||||
|
|
@ -3861,8 +3859,7 @@ zone_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,
|
|||
foundname->attributes |= DNS_NAMEATTR_WILDCARD;
|
||||
|
||||
node_exit:
|
||||
NODE_UNLOCK(&(search.rbtdb->node_locks[node->locknum].lock),
|
||||
isc_rwlocktype_read);
|
||||
NODE_UNLOCK(lock, isc_rwlocktype_read);
|
||||
|
||||
tree_exit:
|
||||
RWUNLOCK(&search.rbtdb->tree_lock, isc_rwlocktype_read);
|
||||
|
|
|
|||
Loading…
Reference in a new issue