diff --git a/CHANGES b/CHANGES index f17012f56b..bc76b1cf6d 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +6231. [func] Make nsupdate honor -v for SOA requests if the server + is specified. [GL #1181] + 6230. [bug] Prevent an unnecessary query restart if a synthesized CNAME target points to the CNAME owner. [GL #3835] diff --git a/bin/nsupdate/nsupdate.c b/bin/nsupdate/nsupdate.c index 1f06dab614..ae759be607 100644 --- a/bin/nsupdate/nsupdate.c +++ b/bin/nsupdate/nsupdate.c @@ -2594,6 +2594,8 @@ recvsoa(isc_task_t *task, isc_event_t *event) { result = dns_request_getresponse(request, rcvmsg, DNS_MESSAGEPARSE_PRESERVEORDER); if (result == DNS_R_TSIGERRORSET && servers != NULL) { + unsigned int options = 0; + dns_message_detach(&rcvmsg); ddebug("Destroying request [%p]", request); dns_request_destroy(&request); @@ -2603,6 +2605,10 @@ recvsoa(isc_task_t *task, isc_event_t *event) { dns_message_renderreset(soaquery); ddebug("retrying soa request without TSIG"); + if (!default_servers && usevc) { + options |= DNS_REQUESTOPT_TCP; + } + if (isc_sockaddr_pf(addr) == AF_INET6) { srcaddr = localaddr6; } else { @@ -2610,7 +2616,7 @@ recvsoa(isc_task_t *task, isc_event_t *event) { } result = dns_request_create(requestmgr, soaquery, srcaddr, addr, - 0, NULL, timeout, udp_timeout, + options, NULL, timeout, udp_timeout, udp_retries, global_task, recvsoa, reqinfo, &request); check_result(result, "dns_request_create"); @@ -2825,6 +2831,11 @@ sendrequest(isc_sockaddr_t *destaddr, dns_message_t *msg, isc_result_t result; nsu_requestinfo_t *reqinfo; isc_sockaddr_t *srcaddr; + unsigned int options = 0; + + if (!default_servers && usevc) { + options |= DNS_REQUESTOPT_TCP; + } reqinfo = isc_mem_get(gmctx, sizeof(nsu_requestinfo_t)); reqinfo->msg = msg; @@ -2836,7 +2847,7 @@ sendrequest(isc_sockaddr_t *destaddr, dns_message_t *msg, srcaddr = localaddr4; } - result = dns_request_create(requestmgr, msg, srcaddr, destaddr, 0, + result = dns_request_create(requestmgr, msg, srcaddr, destaddr, options, default_servers ? NULL : tsigkey, timeout, udp_timeout, udp_retries, global_task, recvsoa, reqinfo, request); diff --git a/doc/notes/notes-current.rst b/doc/notes/notes-current.rst index e8e2cabdfb..79dcce4a0b 100644 --- a/doc/notes/notes-current.rst +++ b/doc/notes/notes-current.rst @@ -32,6 +32,9 @@ Feature Changes - None. +- Make :iscman:`nsupdate` honor the ``-v`` option. If set, and the server is + specified, SOA queries are now send over TCP as well. :gl:`#1181` + Bug Fixes ~~~~~~~~~