From: Mark Andrews Date: Thu, 22 Jan 2015 04:56:50 +0000 (+1100) Subject: 4045. [bug] Skip to next master on dns_request_createvia4 failure. X-Git-Tag: v9.11.0a1~1081^2 X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=875574f1e4e87d8412b682084991954c10c20e35;p=thirdparty%2Fbind9.git 4045. [bug] Skip to next master on dns_request_createvia4 failure. [RT #25185] --- diff --git a/CHANGES b/CHANGES index 3250a190e5d..750cf4adf61 100644 --- 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] diff --git a/lib/dns/zone.c b/lib/dns/zone.c index ab1b953d874..d7c7444ed34 100644 --- a/lib/dns/zone.c +++ b/lib/dns/zone.c @@ -11674,14 +11674,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); @@ -11803,9 +11800,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); @@ -11831,6 +11828,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. */