]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
[master] Fix master address failover when GSS-API is used
authorMichał Kępień <michal@isc.org>
Wed, 14 Jun 2017 11:09:26 +0000 (13:09 +0200)
committerMichał Kępień <michal@isc.org>
Mon, 14 Aug 2017 13:00:25 +0000 (15:00 +0200)
4680. [bug] Fix failing over to another master server address when
nsupdate is used with GSS-API. [RT #45380]

CHANGES
bin/nsupdate/nsupdate.c

diff --git a/CHANGES b/CHANGES
index 7792f29c9f33072ba3923e7f429f5d903f5aa346..5beab0f4fc7f2afcf144e6d9e6a00e7d00296de0 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,3 +1,6 @@
+4680.  [bug]           Fix failing over to another master server address when
+                       nsupdate is used with GSS-API. [RT #45380]
+
 4679.  [cleanup]       Suggest using -o when dnssec-verify finds a SOA record
                        not at top of zone and -o is not used. [RT #45519]
 
index 2ef75905a26320e0acc93b475a00a2facb4afd7a..eaac2ef2fc084ac89822436571f0f7a740f8cf2e 100644 (file)
@@ -2950,11 +2950,17 @@ recvgss(isc_task_t *task, isc_event_t *event) {
        }
 
        if (eresult != ISC_R_SUCCESS) {
-               next_master("recvgss", addr, eresult);
                ddebug("Destroying request [%p]", request);
                dns_request_destroy(&request);
-               dns_message_renderreset(tsigquery);
-               sendrequest(&master_servers[master_inuse], tsigquery, &request);
+               if (!next_master("recvgss", addr, eresult)) {
+                       dns_message_destroy(&tsigquery);
+                       failed_gssrequest();
+               } else {
+                       dns_message_renderreset(tsigquery);
+                       memmove(kserver, &master_servers[master_inuse],
+                               sizeof(isc_sockaddr_t));
+                       send_gssrequest(kserver, tsigquery, &request, context);
+               }
                isc_mem_put(gmctx, reqinfo, sizeof(nsu_gssinfo_t));
                isc_event_free(&event);
                return;