From: Evan Hunt Date: Thu, 27 Oct 2022 06:43:45 +0000 (-0700) Subject: refactor delzone to use loop callbacks X-Git-Tag: v9.19.11~52^2~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9bdf982ea6c8ac9810ac8efa831081107f4515d5;p=thirdparty%2Fbind9.git refactor delzone to use loop callbacks the rmzone() function is now posted using isc_async_run(). dns_zone_gettask() is no longer used anywhere, and has been removed. --- diff --git a/bin/named/server.c b/bin/named/server.c index 3048eb6116a..a1b93e1824b 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -14244,8 +14244,8 @@ typedef struct { * Carry out a zone deletion scheduled by named_server_delzone(). */ static void -rmzone(isc_task_t *task, isc_event_t *event) { - ns_dzctx_t *dz = (ns_dzctx_t *)event->ev_arg; +rmzone(void *arg) { + ns_dzctx_t *dz = (ns_dzctx_t *)arg; dns_zone_t *zone = NULL, *raw = NULL, *mayberaw = NULL; dns_catz_zone_t *catz = NULL; char zonename[DNS_NAME_FORMATSIZE]; @@ -14261,8 +14261,6 @@ rmzone(isc_task_t *task, isc_event_t *event) { REQUIRE(dz != NULL); - isc_event_free(&event); - /* Dig out configuration for this zone */ zone = dz->zone; view = dns_zone_getview(zone); @@ -14398,7 +14396,6 @@ rmzone(isc_task_t *task, isc_event_t *event) { } dns_zone_detach(&zone); isc_mem_put(named_g_mctx, dz, sizeof(*dz)); - isc_task_detach(&task); } /* @@ -14417,8 +14414,6 @@ named_server_delzone(named_server_t *server, isc_lex_t *lex, const char *ptr; bool added; ns_dzctx_t *dz = NULL; - isc_event_t *dzevent = NULL; - isc_task_t *task = NULL; REQUIRE(text != NULL); @@ -14466,16 +14461,11 @@ named_server_delzone(named_server_t *server, isc_lex_t *lex, /* Send cleanup event */ dz = isc_mem_get(named_g_mctx, sizeof(*dz)); - - dz->cleanup = cleanup; - dz->zone = NULL; + *dz = (ns_dzctx_t){ + .cleanup = cleanup, + }; dns_zone_attach(zone, &dz->zone); - dzevent = isc_event_allocate(named_g_mctx, server, NAMED_EVENT_DELZONE, - rmzone, dz, sizeof(isc_event_t)); - - dns_zone_gettask(zone, &task); - isc_task_send(task, &dzevent); - dz = NULL; + isc_async_run(dns_zone_getloop(zone), rmzone, dz); /* Inform user about cleaning up stub/secondary zone files */ dns_zone_getraw(zone, &raw); diff --git a/lib/dns/include/dns/zone.h b/lib/dns/include/dns/zone.h index 019effd051d..e7a162d3b4b 100644 --- a/lib/dns/include/dns/zone.h +++ b/lib/dns/include/dns/zone.h @@ -1307,17 +1307,6 @@ dns_zone_getredirecttype(dns_zone_t *zone); *\li 'dns_zone_secondary' */ -void -dns_zone_gettask(dns_zone_t *zone, isc_task_t **target); -/*%< - * Attach '*target' to the zone's task. - * - * Requires: - *\li 'zone' to be valid initialised zone. - *\li 'zone' to have a task. - *\li 'target' to be != NULL && '*target' == NULL. - */ - void dns_zone_notify(dns_zone_t *zone); /*%< diff --git a/lib/dns/zone.c b/lib/dns/zone.c index 860e784c899..48b9221dffb 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -15695,12 +15695,6 @@ dns_zone_getorigin(dns_zone_t *zone) { return (&zone->origin); } -void -dns_zone_gettask(dns_zone_t *zone, isc_task_t **target) { - REQUIRE(DNS_ZONE_VALID(zone)); - isc_task_attach(zone->task, target); -} - void dns_zone_setidlein(dns_zone_t *zone, uint32_t idlein) { REQUIRE(DNS_ZONE_VALID(zone));