]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4045. [bug] Skip to next master on dns_request_createvia4 failure.
authorMark Andrews <marka@isc.org>
Thu, 22 Jan 2015 04:56:50 +0000 (15:56 +1100)
committerMark Andrews <marka@isc.org>
Thu, 22 Jan 2015 04:57:16 +0000 (15:57 +1100)
                        [RT #25185]

(cherry picked from commit 875574f1e4e87d8412b682084991954c10c20e35)

CHANGES
lib/dns/zone.c

diff --git a/CHANGES b/CHANGES
index 35e25a0e2410462e3a5dc509e30ca0bad82d068a..c8040da0a2ba205ba1465831e18a1dc44a4da4ce 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4045.  [bug]           Skip to next master on dns_request_createvia4 failure.
+                       [RT #25185]
+
 4044.  [bug]           Change 3955 was not complete, resulting in an assertion
                        failure if the timing was just right. [RT #38352]
 
index f6f7a50399de13f08f159d6990f313962b90eea3..6e0eeb23cb1f0d7b549c7c250ae0c9740f630b97 100644 (file)
@@ -11536,14 +11536,11 @@ soa_query(isc_task_t *task, isc_event_t *event) {
                goto cleanup;
        }
 
-       /*
-        * XXX Optimisation: Create message when zone is setup and reuse.
-        */
+ again:
        result = create_query(zone, dns_rdatatype_soa, &message);
        if (result != ISC_R_SUCCESS)
                goto cleanup;
 
- again:
        INSIST(zone->masterscnt > 0);
        INSIST(zone->curmaster < zone->masterscnt);
 
@@ -11661,9 +11658,9 @@ soa_query(isc_task_t *task, isc_event_t *event) {
        if (result != ISC_R_SUCCESS) {
                zone_idetach(&dummy);
                zone_debuglog(zone, me, 1,
-                             "dns_request_createvia2() failed: %s",
+                             "dns_request_createvia4() failed: %s",
                              dns_result_totext(result));
-               goto cleanup;
+               goto skip_master;
        } else {
                if (isc_sockaddr_pf(&zone->masteraddr) == PF_INET)
                        inc_stats(zone, dns_zonestatscounter_soaoutv4);
@@ -11689,6 +11686,7 @@ soa_query(isc_task_t *task, isc_event_t *event) {
  skip_master:
        if (key != NULL)
                dns_tsigkey_detach(&key);
+       dns_message_destroy(&message);
        /*
         * Skip to next failed / untried master.
         */