Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
BIND
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
600
Issues
600
List
Boards
Labels
Service Desk
Milestones
Merge Requests
111
Merge Requests
111
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ISC Open Source Projects
BIND
Commits
c7e021e2
Commit
c7e021e2
authored
Aug 12, 2016
by
Mark Andrews
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
4439. [bug] Address race conditions getting ownernames of nodes.
[RT #43005]
parent
d260d5ef
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
62 additions
and
8 deletions
+62
-8
CHANGES
CHANGES
+3
-0
bin/tests/system/dyndb/driver/db.c
bin/tests/system/dyndb/driver/db.c
+2
-1
lib/dns/db.c
lib/dns/db.c
+11
-0
lib/dns/ecdb.c
lib/dns/ecdb.c
+2
-1
lib/dns/include/dns/db.h
lib/dns/include/dns/db.h
+12
-0
lib/dns/rbtdb.c
lib/dns/rbtdb.c
+24
-2
lib/dns/sdb.c
lib/dns/sdb.c
+2
-1
lib/dns/sdlz.c
lib/dns/sdlz.c
+2
-1
lib/dns/win32/libdns.def.in
lib/dns/win32/libdns.def.in
+1
-0
lib/dns/zone.c
lib/dns/zone.c
+3
-2
No files found.
CHANGES
View file @
c7e021e2
4439. [bug] Address race conditions getting ownernames of nodes.
[RT #43005]
4438. [func] Use LIFO rather than FIFO when processing startup
4438. [func] Use LIFO rather than FIFO when processing startup
notify and refresh queries. [RT #42825]
notify and refresh queries. [RT #42825]
...
...
bin/tests/system/dyndb/driver/db.c
View file @
c7e021e2
...
@@ -622,7 +622,8 @@ static dns_dbmethods_t sampledb_methods = {
...
@@ -622,7 +622,8 @@ static dns_dbmethods_t sampledb_methods = {
findnodeext
,
findnodeext
,
findext
,
findext
,
setcachestats
,
setcachestats
,
hashsize
hashsize
,
NULL
};
};
/* Auxiliary driver functions. */
/* Auxiliary driver functions. */
...
...
lib/dns/db.c
View file @
c7e021e2
...
@@ -1100,3 +1100,14 @@ dns_db_updatenotify_unregister(dns_db_t *db,
...
@@ -1100,3 +1100,14 @@ dns_db_updatenotify_unregister(dns_db_t *db,
return
(
ISC_R_NOTFOUND
);
return
(
ISC_R_NOTFOUND
);
}
}
isc_result_t
dns_db_nodefullname
(
dns_db_t
*
db
,
dns_dbnode_t
*
node
,
dns_name_t
*
name
)
{
REQUIRE
(
db
!=
NULL
);
REQUIRE
(
node
!=
NULL
);
REQUIRE
(
name
!=
NULL
);
if
(
db
->
methods
->
nodefullname
==
NULL
)
return
(
ISC_R_NOTIMPLEMENTED
);
return
((
db
->
methods
->
nodefullname
)(
db
,
node
,
name
));
}
lib/dns/ecdb.c
View file @
c7e021e2
...
@@ -581,7 +581,8 @@ static dns_dbmethods_t ecdb_methods = {
...
@@ -581,7 +581,8 @@ static dns_dbmethods_t ecdb_methods = {
NULL
,
/* findnodeext */
NULL
,
/* findnodeext */
NULL
,
/* findext */
NULL
,
/* findext */
NULL
,
/* setcachestats */
NULL
,
/* setcachestats */
NULL
/* hashsize */
NULL
,
/* hashsize */
NULL
/* nodefullname */
};
};
static
isc_result_t
static
isc_result_t
...
...
lib/dns/include/dns/db.h
View file @
c7e021e2
...
@@ -186,6 +186,8 @@ typedef struct dns_dbmethods {
...
@@ -186,6 +186,8 @@ typedef struct dns_dbmethods {
dns_rdataset_t
*
sigrdataset
);
dns_rdataset_t
*
sigrdataset
);
isc_result_t
(
*
setcachestats
)(
dns_db_t
*
db
,
isc_stats_t
*
stats
);
isc_result_t
(
*
setcachestats
)(
dns_db_t
*
db
,
isc_stats_t
*
stats
);
size_t
(
*
hashsize
)(
dns_db_t
*
db
);
size_t
(
*
hashsize
)(
dns_db_t
*
db
);
isc_result_t
(
*
nodefullname
)(
dns_db_t
*
db
,
dns_dbnode_t
*
node
,
dns_name_t
*
name
);
}
dns_dbmethods_t
;
}
dns_dbmethods_t
;
typedef
isc_result_t
typedef
isc_result_t
...
@@ -1654,6 +1656,16 @@ dns_db_updatenotify_unregister(dns_db_t *db,
...
@@ -1654,6 +1656,16 @@ dns_db_updatenotify_unregister(dns_db_t *db,
*
*
*/
*/
isc_result_t
dns_db_nodefullname
(
dns_db_t
*
db
,
dns_dbnode_t
*
node
,
dns_name_t
*
name
);
/*%<
* Get the name associated with a database node.
*
* Requires:
*
* \li 'db' is a valid database
* \li 'node' and 'name' are not NULL
*/
ISC_LANG_ENDDECLS
ISC_LANG_ENDDECLS
#endif
/* DNS_DB_H */
#endif
/* DNS_DB_H */
lib/dns/rbtdb.c
View file @
c7e021e2
...
@@ -218,6 +218,7 @@ typedef isc_uint64_t rbtdb_serial_t;
...
@@ -218,6 +218,7 @@ typedef isc_uint64_t rbtdb_serial_t;
#define new_reference new_reference64
#define new_reference new_reference64
#define newversion newversion64
#define newversion newversion64
#define nodecount nodecount64
#define nodecount nodecount64
#define nodefullname nodefullname64
#define overmem overmem64
#define overmem overmem64
#define previous_closest_nsec previous_closest_nsec64
#define previous_closest_nsec previous_closest_nsec64
#define printnode printnode64
#define printnode printnode64
...
@@ -6630,7 +6631,9 @@ addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
...
@@ -6630,7 +6631,9 @@ addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
dns_fixedname_init
(
&
fixed
);
dns_fixedname_init
(
&
fixed
);
name
=
dns_fixedname_name
(
&
fixed
);
name
=
dns_fixedname_name
(
&
fixed
);
RWLOCK
(
&
rbtdb
->
tree_lock
,
isc_rwlocktype_read
);
dns_rbt_fullnamefromnode
(
node
,
name
);
dns_rbt_fullnamefromnode
(
node
,
name
);
RWUNLOCK
(
&
rbtdb
->
tree_lock
,
isc_rwlocktype_read
);
dns_rdataset_getownercase
(
rdataset
,
name
);
dns_rdataset_getownercase
(
rdataset
,
name
);
newheader
=
(
rdatasetheader_t
*
)
region
.
base
;
newheader
=
(
rdatasetheader_t
*
)
region
.
base
;
...
@@ -8061,6 +8064,23 @@ getrrsetstats(dns_db_t *db) {
...
@@ -8061,6 +8064,23 @@ getrrsetstats(dns_db_t *db) {
return
(
rbtdb
->
rrsetstats
);
return
(
rbtdb
->
rrsetstats
);
}
}
static
isc_result_t
nodefullname
(
dns_db_t
*
db
,
dns_dbnode_t
*
node
,
dns_name_t
*
name
)
{
dns_rbtdb_t
*
rbtdb
=
(
dns_rbtdb_t
*
)
db
;
dns_rbtnode_t
*
rbtnode
=
(
dns_rbtnode_t
*
)
node
;
isc_result_t
result
;
REQUIRE
(
VALID_RBTDB
(
rbtdb
));
REQUIRE
(
node
!=
NULL
);
REQUIRE
(
name
!=
NULL
);
RWLOCK
(
&
rbtdb
->
tree_lock
,
isc_rwlocktype_read
);
result
=
dns_rbt_fullnamefromnode
(
rbtnode
,
name
);
RWUNLOCK
(
&
rbtdb
->
tree_lock
,
isc_rwlocktype_read
);
return
(
result
);
}
static
dns_dbmethods_t
zone_methods
=
{
static
dns_dbmethods_t
zone_methods
=
{
attach
,
attach
,
detach
,
detach
,
...
@@ -8104,7 +8124,8 @@ static dns_dbmethods_t zone_methods = {
...
@@ -8104,7 +8124,8 @@ static dns_dbmethods_t zone_methods = {
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
NULL
,
hashsize
hashsize
,
nodefullname
};
};
static
dns_dbmethods_t
cache_methods
=
{
static
dns_dbmethods_t
cache_methods
=
{
...
@@ -8150,7 +8171,8 @@ static dns_dbmethods_t cache_methods = {
...
@@ -8150,7 +8171,8 @@ static dns_dbmethods_t cache_methods = {
NULL
,
NULL
,
NULL
,
NULL
,
setcachestats
,
setcachestats
,
hashsize
hashsize
,
nodefullname
};
};
isc_result_t
isc_result_t
...
...
lib/dns/sdb.c
View file @
c7e021e2
...
@@ -1289,7 +1289,8 @@ static dns_dbmethods_t sdb_methods = {
...
@@ -1289,7 +1289,8 @@ static dns_dbmethods_t sdb_methods = {
findnodeext
,
findnodeext
,
findext
,
findext
,
NULL
,
/* setcachestats */
NULL
,
/* setcachestats */
NULL
/* hashsize */
NULL
,
/* hashsize */
NULL
/* nodefullname */
};
};
static
isc_result_t
static
isc_result_t
...
...
lib/dns/sdlz.c
View file @
c7e021e2
...
@@ -1323,7 +1323,8 @@ static dns_dbmethods_t sdlzdb_methods = {
...
@@ -1323,7 +1323,8 @@ static dns_dbmethods_t sdlzdb_methods = {
findnodeext
,
findnodeext
,
findext
,
findext
,
NULL
,
/* setcachestats */
NULL
,
/* setcachestats */
NULL
/* hashsize */
NULL
,
/* hashsize */
NULL
/* nodefullname */
};
};
/*
/*
...
...
lib/dns/win32/libdns.def.in
View file @
c7e021e2
...
@@ -227,6 +227,7 @@ dns_db_load2
...
@@ -227,6 +227,7 @@ dns_db_load2
dns_db_load3
dns_db_load3
dns_db_newversion
dns_db_newversion
dns_db_nodecount
dns_db_nodecount
dns_db_nodefullname
dns_db_ondestroy
dns_db_ondestroy
dns_db_origin
dns_db_origin
dns_db_overmem
dns_db_overmem
...
...
lib/dns/zone.c
View file @
c7e021e2
...
@@ -53,7 +53,6 @@
...
@@ -53,7 +53,6 @@
#include <dns/nsec3.h>
#include <dns/nsec3.h>
#include <dns/peer.h>
#include <dns/peer.h>
#include <dns/private.h>
#include <dns/private.h>
#include <dns/rbt.h>
#include <dns/rcode.h>
#include <dns/rcode.h>
#include <dns/rdata.h>
#include <dns/rdata.h>
#include <dns/rdataclass.h>
#include <dns/rdataclass.h>
...
@@ -13980,9 +13979,11 @@ checkandaddsoa(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
...
@@ -13980,9 +13979,11 @@ checkandaddsoa(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,
dns_rdataset_init(&temprdataset);
dns_rdataset_init(&temprdataset);
result = dns_rdatalist_tordataset(&temprdatalist, &temprdataset);
result = dns_rdatalist_tordataset(&temprdatalist, &temprdataset);
RUNTIME_CHECK(result == ISC_R_SUCCESS);
RUNTIME_CHECK(result == ISC_R_SUCCESS);
dns_fixedname_init(&fixed);
dns_fixedname_init(&fixed);
name = dns_fixedname_name(&fixed);
name = dns_fixedname_name(&fixed);
dns_rbtnode_nodename(node, name);
result = dns_db_nodefullname(db, node, name);
RUNTIME_CHECK(result == ISC_R_SUCCESS);
dns_rdataset_getownercase(rdataset, name);
dns_rdataset_getownercase(rdataset, name);
dns_rdataset_setownercase(&temprdataset, name);
dns_rdataset_setownercase(&temprdataset, name);
return (dns_db_addrdataset(db, node, version, 0, &temprdataset,
return (dns_db_addrdataset(db, node, version, 0, &temprdataset,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment