]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
nsupdate: try next server on REFUSED
authorEvan Hunt <each@isc.org>
Wed, 9 Jun 2021 20:37:20 +0000 (13:37 -0700)
committerEvan Hunt <each@isc.org>
Wed, 23 Jun 2021 16:00:29 +0000 (09:00 -0700)
when nsupdate sends an SOA query to a resolver, if it fails
with REFUSED, nsupdate will now try the next server rather than
aborting the update completely.

bin/nsupdate/nsupdate.c

index 9835c47b9e5c1887c9022161e6cd880a8288205d..d3f9fd7d50dee69ab4b64de9c74168252daf82d3 100644 (file)
@@ -2634,6 +2634,17 @@ recvsoa(isc_task_t *task, isc_event_t *event) {
                return;
        }
        check_result(result, "dns_request_getresponse");
+
+       if (rcvmsg->rcode == dns_rcode_refused) {
+               next_server("recvsoa", addr, DNS_R_REFUSED);
+               dns_message_detach(&rcvmsg);
+               dns_request_destroy(&request);
+               dns_message_renderreset(soaquery);
+               dns_message_settsigkey(soaquery, NULL);
+               sendrequest(&servers[ns_inuse], soaquery, &request);
+               return;
+       }
+
        section = DNS_SECTION_ANSWER;
        POST(section);
        if (debugging) {