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:
Mark Andrews 2016-12-28 15:55:47 +11:00
parent 354f7b05ef
commit c161d54a65
3 changed files with 10 additions and 22 deletions

View file

@ -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]

View file

@ -2687,7 +2687,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;
@ -2742,7 +2742,6 @@ dns_client_startupdate(dns_client_t *client, dns_rdataclass_t rdclass,
dns_section_t section = DNS_SECTION_UPDATE;
isc_sockaddr_t *server, *sa = NULL;
dns_tsectype_t tsectype = dns_tsectype_none;
isc_event_t *runinevent;
UNUSED(options);
@ -2774,19 +2773,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);
}
@ -2892,13 +2881,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);

View file

@ -80,11 +80,6 @@
#define DNS_EVENT_KEYDONE (ISC_EVENTCLASS_DNS + 50)
#define DNS_EVENT_SETNSEC3PARAM (ISC_EVENTCLASS_DNS + 51)
#define DNS_EVENT_SETSERIAL (ISC_EVENTCLASS_DNS + 52)
#define DNS_EVENT_CATZUPDATED (ISC_EVENTCLASS_DNS + 53)
#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)