mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
Merge branch '3074-catz-excl-task' into 'main'
Prevent a shutdown race in catz_create_chg_task() Closes #3074 See merge request isc-projects/bind9!5687
This commit is contained in:
commit
b2c9543a6e
2 changed files with 13 additions and 5 deletions
4
CHANGES
4
CHANGES
|
|
@ -1,3 +1,7 @@
|
|||
5788. [bug] An assertion could occur if a catalog zone event was
|
||||
scheduled while the task manager was being shut
|
||||
down. [GL #3074]
|
||||
|
||||
5787. [doc] Update 'auto-dnssec' documentation, it may only be
|
||||
activated at zone level. [GL #3023]
|
||||
|
||||
|
|
|
|||
|
|
@ -2902,11 +2902,16 @@ static isc_result_t
|
|||
catz_create_chg_task(dns_catz_entry_t *entry, dns_catz_zone_t *origin,
|
||||
dns_view_t *view, isc_taskmgr_t *taskmgr, void *udata,
|
||||
isc_eventtype_t type) {
|
||||
catz_chgzone_event_t *event;
|
||||
isc_task_t *task;
|
||||
catz_chgzone_event_t *event = NULL;
|
||||
isc_task_t *task = NULL;
|
||||
isc_result_t result;
|
||||
isc_taskaction_t action = NULL;
|
||||
|
||||
result = isc_taskmgr_excltask(taskmgr, &task);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
return (result);
|
||||
}
|
||||
|
||||
switch (type) {
|
||||
case DNS_EVENT_CATZADDZONE:
|
||||
case DNS_EVENT_CATZMODZONE:
|
||||
|
|
@ -2917,6 +2922,7 @@ catz_create_chg_task(dns_catz_entry_t *entry, dns_catz_zone_t *origin,
|
|||
break;
|
||||
default:
|
||||
REQUIRE(0);
|
||||
ISC_UNREACHABLE();
|
||||
}
|
||||
|
||||
event = (catz_chgzone_event_t *)isc_event_allocate(
|
||||
|
|
@ -2927,13 +2933,11 @@ catz_create_chg_task(dns_catz_entry_t *entry, dns_catz_zone_t *origin,
|
|||
event->origin = NULL;
|
||||
event->view = NULL;
|
||||
event->mod = (type == DNS_EVENT_CATZMODZONE);
|
||||
|
||||
dns_catz_entry_attach(entry, &event->entry);
|
||||
dns_catz_zone_attach(origin, &event->origin);
|
||||
dns_view_attach(view, &event->view);
|
||||
|
||||
task = NULL;
|
||||
result = isc_taskmgr_excltask(taskmgr, &task);
|
||||
REQUIRE(result == ISC_R_SUCCESS);
|
||||
isc_task_send(task, ISC_EVENT_PTR(&event));
|
||||
isc_task_detach(&task);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue