mirror of
https://github.com/isc-projects/bind9.git
synced 2026-03-16 23:52:40 -04:00
Merge branch '3230-remove-task-exclusive-mode-from-ns_clientmgr-v9_18' into 'v9_18'
Remove task exclusive mode from ns_clientmgr [v9.18] See merge request isc-projects/bind9!6187
This commit is contained in:
commit
0cdb2f497a
3 changed files with 5 additions and 37 deletions
3
CHANGES
3
CHANGES
|
|
@ -30,6 +30,9 @@
|
|||
favor of rwlocked access to localhost and localnets
|
||||
members of dns_aclenv_t structure. [GL #3229]
|
||||
|
||||
5842. [cleanup] Remove the task exclusive mode use in ns_clientmgr.
|
||||
[GL #3230]
|
||||
|
||||
--- 9.18.2 released ---
|
||||
|
||||
5856. [bug] The "starting maxtime timer" message related to outgoing
|
||||
|
|
|
|||
|
|
@ -2437,13 +2437,8 @@ clientmgr_destroy(ns_clientmgr_t *manager) {
|
|||
|
||||
dns_aclenv_detach(&manager->aclenv);
|
||||
|
||||
isc_mutex_destroy(&manager->lock);
|
||||
isc_mutex_destroy(&manager->reclock);
|
||||
|
||||
if (manager->excl != NULL) {
|
||||
isc_task_detach(&manager->excl);
|
||||
}
|
||||
|
||||
isc_task_detach(&manager->task);
|
||||
ns_server_detach(&manager->sctx);
|
||||
|
||||
|
|
@ -2464,13 +2459,6 @@ ns_clientmgr_create(ns_server_t *sctx, isc_taskmgr_t *taskmgr,
|
|||
manager = isc_mem_get(mctx, sizeof(*manager));
|
||||
*manager = (ns_clientmgr_t){ .magic = 0, .mctx = mctx };
|
||||
|
||||
result = isc_taskmgr_excltask(taskmgr, &manager->excl);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
isc_mem_put(mctx, manager, sizeof(*manager));
|
||||
return (result);
|
||||
}
|
||||
|
||||
isc_mutex_init(&manager->lock);
|
||||
isc_mutex_init(&manager->reclock);
|
||||
|
||||
manager->taskmgr = taskmgr;
|
||||
|
|
@ -2479,7 +2467,6 @@ ns_clientmgr_create(ns_server_t *sctx, isc_taskmgr_t *taskmgr,
|
|||
|
||||
dns_aclenv_attach(aclenv, &manager->aclenv);
|
||||
|
||||
manager->exiting = false;
|
||||
result = isc_task_create_bound(manager->taskmgr, 20, &manager->task,
|
||||
manager->tid);
|
||||
RUNTIME_CHECK(result == ISC_R_SUCCESS);
|
||||
|
|
@ -2502,33 +2489,16 @@ ns_clientmgr_create(ns_server_t *sctx, isc_taskmgr_t *taskmgr,
|
|||
|
||||
void
|
||||
ns_clientmgr_destroy(ns_clientmgr_t **managerp) {
|
||||
isc_result_t result;
|
||||
ns_clientmgr_t *manager;
|
||||
bool unlock = false;
|
||||
|
||||
REQUIRE(managerp != NULL);
|
||||
REQUIRE(VALID_MANAGER(*managerp));
|
||||
|
||||
manager = *managerp;
|
||||
*managerp = NULL;
|
||||
REQUIRE(VALID_MANAGER(manager));
|
||||
|
||||
MTRACE("destroy");
|
||||
|
||||
/*
|
||||
* Check for success because we may already be task-exclusive
|
||||
* at this point. Only if we succeed at obtaining an exclusive
|
||||
* lock now will we need to relinquish it later.
|
||||
*/
|
||||
result = isc_task_beginexclusive(manager->excl);
|
||||
if (result == ISC_R_SUCCESS) {
|
||||
unlock = true;
|
||||
}
|
||||
|
||||
manager->exiting = true;
|
||||
|
||||
if (unlock) {
|
||||
isc_task_endexclusive(manager->excl);
|
||||
}
|
||||
|
||||
if (isc_refcount_decrement(&manager->references) == 1) {
|
||||
clientmgr_destroy(manager);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -147,7 +147,6 @@ struct ns_clientmgr {
|
|||
ns_server_t *sctx;
|
||||
isc_taskmgr_t *taskmgr;
|
||||
isc_timermgr_t *timermgr;
|
||||
isc_task_t *excl;
|
||||
isc_refcount_t references;
|
||||
int tid;
|
||||
|
||||
|
|
@ -156,10 +155,6 @@ struct ns_clientmgr {
|
|||
|
||||
dns_aclenv_t *aclenv;
|
||||
|
||||
/* Lock covers manager state. */
|
||||
isc_mutex_t lock;
|
||||
bool exiting;
|
||||
|
||||
/* Lock covers the recursing list */
|
||||
isc_mutex_t reclock;
|
||||
client_list_t recursing; /*%< Recursing clients */
|
||||
|
|
|
|||
Loading…
Reference in a new issue