]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4543. [bug] dns_client_startupdate now delays sending the update
authorMark Andrews <marka@isc.org>
Wed, 28 Dec 2016 04:55:47 +0000 (15:55 +1100)
committerMark Andrews <marka@isc.org>
Wed, 28 Dec 2016 04:55:47 +0000 (15:55 +1100)
                        request until isc_app_ctxrun has been called.
                        [RT #43976]

(cherry picked from commit 6f94747270f5249a29c5f1217340b40ff15c5230)

CHANGES
lib/dns/client.c
lib/dns/include/dns/events.h

diff --git a/CHANGES b/CHANGES
index f40b213c326803d76bf1b585e87c0718cb8d5e66..517719472016cda5064c0bb25b86710be0d0b03b 100644 (file)
--- a/CHANGES
+++ b/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]
 
index da318b569469f88dec6a9abca1b288882b4f13ef..8fd0efe02122f99f1345aaffa30d0f95528f8544 100644 (file)
@@ -2744,7 +2744,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;
@@ -2799,7 +2799,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);
 
@@ -2831,19 +2830,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);
        }
@@ -2949,13 +2938,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);
index 6d8b5a81a824d445e3c452ecf27f4e340fc22c7e..fecf5f5b57ae1fc8d0ea36fa47c2af0ddb113ee6 100644 (file)
 #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)