mirror of
https://github.com/isc-projects/bind9.git
synced 2026-06-11 11:29:59 -04:00
4543. [bug] dns_client_startupdate now delays sending the update
request until isc_app_ctxrun has been called.
[RT #43976]
(cherry picked from commit 6f94747270)
This commit is contained in:
parent
72cae054ad
commit
6b45fd062b
3 changed files with 10 additions and 18 deletions
4
CHANGES
4
CHANGES
|
|
@ -1,3 +1,7 @@
|
|||
4543. [bug] dns_client_startupdate now delays sending the update
|
||||
request until isc_app_ctxrun has been called.
|
||||
[RT #43976]
|
||||
|
||||
4541. [bug] rndc addzone should properly reject non master/slave
|
||||
zones. [RT #43665]
|
||||
|
||||
|
|
|
|||
|
|
@ -2773,7 +2773,7 @@ dns_client_update(dns_client_t *client, dns_rdataclass_t rdclass,
|
|||
}
|
||||
|
||||
static void
|
||||
runintask(isc_task_t *task, isc_event_t *event) {
|
||||
startupdate(isc_task_t *task, isc_event_t *event) {
|
||||
updatectx_t *uctx;
|
||||
isc_result_t result;
|
||||
unsigned int resoptions;
|
||||
|
|
@ -2831,7 +2831,6 @@ dns_client_startupdate(dns_client_t *client, dns_rdataclass_t rdclass,
|
|||
isc_sockaddr_t *server, *sa = NULL;
|
||||
dns_tsectype_t tsectype = dns_tsectype_none;
|
||||
isc_boolean_t want_tcp;
|
||||
isc_event_t *runinevent;
|
||||
|
||||
UNUSED(options);
|
||||
|
||||
|
|
@ -2865,19 +2864,9 @@ dns_client_startupdate(dns_client_t *client, dns_rdataclass_t rdclass,
|
|||
return (ISC_R_NOMEMORY);
|
||||
}
|
||||
|
||||
runinevent = isc_event_allocate(client->mctx, client->task,
|
||||
DNS_EVENT_RUNIN, runintask,
|
||||
uctx, sizeof(*runinevent));
|
||||
if (runinevent == NULL) {
|
||||
dns_view_detach(&view);
|
||||
isc_mem_put(client->mctx, uctx, sizeof(*uctx));
|
||||
return (ISC_R_NOMEMORY);
|
||||
}
|
||||
|
||||
result = isc_mutex_init(&uctx->lock);
|
||||
if (result != ISC_R_SUCCESS) {
|
||||
dns_view_detach(&view);
|
||||
isc_event_free(&runinevent);
|
||||
isc_mem_put(client->mctx, uctx, sizeof(*uctx));
|
||||
return (ISC_R_NOMEMORY);
|
||||
}
|
||||
|
|
@ -2984,13 +2973,13 @@ dns_client_startupdate(dns_client_t *client, dns_rdataclass_t rdclass,
|
|||
UNLOCK(&client->lock);
|
||||
|
||||
*transp = (dns_clientupdatetrans_t *)uctx;
|
||||
isc_task_send(client->task, &runinevent);
|
||||
|
||||
return (ISC_R_SUCCESS);
|
||||
result = isc_app_ctxonrun(client->actx, client->mctx, client->task,
|
||||
startupdate, uctx);
|
||||
if (result == ISC_R_SUCCESS)
|
||||
return (result);
|
||||
*transp = NULL;
|
||||
|
||||
fail:
|
||||
if (runinevent != NULL)
|
||||
isc_event_free(&runinevent);
|
||||
if (ISC_LINK_LINKED(uctx, link)) {
|
||||
LOCK(&client->lock);
|
||||
ISC_LIST_UNLINK(client->updatectxs, uctx, link);
|
||||
|
|
|
|||
|
|
@ -75,7 +75,6 @@
|
|||
#define DNS_EVENT_CATZADDZONE (ISC_EVENTCLASS_DNS + 54)
|
||||
#define DNS_EVENT_CATZMODZONE (ISC_EVENTCLASS_DNS + 55)
|
||||
#define DNS_EVENT_CATZDELZONE (ISC_EVENTCLASS_DNS + 56)
|
||||
#define DNS_EVENT_RUNIN (ISC_EVENTCLASS_DNS + 57)
|
||||
|
||||
#define DNS_EVENT_FIRSTEVENT (ISC_EVENTCLASS_DNS + 0)
|
||||
#define DNS_EVENT_LASTEVENT (ISC_EVENTCLASS_DNS + 65535)
|
||||
|
|
|
|||
Loading…
Reference in a new issue