mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-01 15:05:23 +00:00
Merge branch 'ondrej/fix-missing-isc_taskmgr_detach-on-exiting' into 'main'
Add isc_taskmgr_detach when task is created while shutting down See merge request isc-projects/bind9!5006
This commit is contained in:
@@ -644,7 +644,7 @@ isc_task_privileged(isc_task_t *task);
|
|||||||
void
|
void
|
||||||
isc_taskmgr_attach(isc_taskmgr_t *, isc_taskmgr_t **);
|
isc_taskmgr_attach(isc_taskmgr_t *, isc_taskmgr_t **);
|
||||||
void
|
void
|
||||||
isc_taskmgr_detach(isc_taskmgr_t *);
|
isc_taskmgr_detach(isc_taskmgr_t **);
|
||||||
/*%<
|
/*%<
|
||||||
* Attach/detach the task manager.
|
* Attach/detach the task manager.
|
||||||
*/
|
*/
|
||||||
|
@@ -193,7 +193,7 @@ task_finished(isc_task_t *task) {
|
|||||||
task->magic = 0;
|
task->magic = 0;
|
||||||
isc_mem_put(mctx, task, sizeof(*task));
|
isc_mem_put(mctx, task, sizeof(*task));
|
||||||
|
|
||||||
isc_taskmgr_detach(manager);
|
isc_taskmgr_detach(&manager);
|
||||||
}
|
}
|
||||||
|
|
||||||
isc_result_t
|
isc_result_t
|
||||||
@@ -265,6 +265,7 @@ isc_task_create_bound(isc_taskmgr_t *manager, unsigned int quantum,
|
|||||||
|
|
||||||
if (exiting) {
|
if (exiting) {
|
||||||
isc_mutex_destroy(&task->lock);
|
isc_mutex_destroy(&task->lock);
|
||||||
|
isc_taskmgr_detach(&task->manager);
|
||||||
isc_mem_put(manager->mctx, task, sizeof(*task));
|
isc_mem_put(manager->mctx, task, sizeof(*task));
|
||||||
return (ISC_R_SHUTTINGDOWN);
|
return (ISC_R_SHUTTINGDOWN);
|
||||||
}
|
}
|
||||||
@@ -959,8 +960,12 @@ isc_taskmgr_attach(isc_taskmgr_t *source, isc_taskmgr_t **targetp) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
isc_taskmgr_detach(isc_taskmgr_t *manager) {
|
isc_taskmgr_detach(isc_taskmgr_t **managerp) {
|
||||||
REQUIRE(VALID_MANAGER(manager));
|
REQUIRE(managerp != NULL);
|
||||||
|
REQUIRE(VALID_MANAGER(*managerp));
|
||||||
|
|
||||||
|
isc_taskmgr_t *manager = *managerp;
|
||||||
|
*managerp = NULL;
|
||||||
|
|
||||||
if (isc_refcount_decrement(&manager->references) == 1) {
|
if (isc_refcount_decrement(&manager->references) == 1) {
|
||||||
manager_free(manager);
|
manager_free(manager);
|
||||||
|
Reference in New Issue
Block a user