]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Make sharing of pending TCP dispatches nonoptional
authorEvan Hunt <each@isc.org>
Fri, 11 Dec 2020 23:20:33 +0000 (15:20 -0800)
committerOndřej Surý <ondrej@sury.org>
Sat, 2 Oct 2021 08:21:35 +0000 (10:21 +0200)
The DNS_REQUESTOPT_SHARE flag was added when client-side pipelining of
TCP queries was implemented. there was no need to make it optional;
forcing it to be in effect for all requests simplfiies the code.

bin/tests/system/pipelined/pipequeries.c
bin/tools/mdig.c
lib/dns/include/dns/request.h
lib/dns/request.c

index 3fe14e2794e0fad7ea54cbb5e42d64a62a6afe65..f9371e7c0d45d92af5ad698917e6753a12cfb10b 100644 (file)
@@ -173,10 +173,10 @@ sendquery(isc_task_t *task) {
        dns_message_addname(message, qname, DNS_SECTION_QUESTION);
 
        request = NULL;
-       result = dns_request_createvia(
-               requestmgr, message, have_src ? &srcaddr : NULL, &dstaddr, -1,
-               DNS_REQUESTOPT_TCP | DNS_REQUESTOPT_SHARE, NULL, TIMEOUT, 0, 0,
-               task, recvresponse, message, &request);
+       result = dns_request_createvia(requestmgr, message,
+                                      have_src ? &srcaddr : NULL, &dstaddr, -1,
+                                      DNS_REQUESTOPT_TCP, NULL, TIMEOUT, 0, 0,
+                                      task, recvresponse, message, &request);
        CHECK("dns_request_create", result);
 
        return (ISC_R_SUCCESS);
index df039afe90679cf586f0b3a29f0918e060c167c8..c07e64b03287ddd424474fb1773c11ce84f7b0d9 100644 (file)
@@ -752,7 +752,7 @@ sendquery(struct query *query, isc_task_t *task) {
 
        options = 0;
        if (tcp_mode) {
-               options |= DNS_REQUESTOPT_TCP | DNS_REQUESTOPT_SHARE;
+               options |= DNS_REQUESTOPT_TCP;
        }
        request = NULL;
        result = dns_request_createvia(
index 6ec7395ae23e47dbef3b0037571d44d225c13753..98afe5a4ae84412cd3824f3f89c4c2e809221383 100644 (file)
@@ -43,7 +43,6 @@
 #define DNS_REQUESTOPT_TCP     0x00000001U
 #define DNS_REQUESTOPT_CASE    0x00000002U
 #define DNS_REQUESTOPT_FIXEDID 0x00000004U
-#define DNS_REQUESTOPT_SHARE   0x00000008U
 
 typedef struct dns_requestevent {
        ISC_EVENT_COMMON(struct dns_requestevent);
index fc6a1c8965092c3691cb3f36daede1b7342fc453..bbff2d6b0e6707b8407a1f95574ba2882fdf53d2 100644 (file)
@@ -512,7 +512,7 @@ isblackholed(dns_dispatchmgr_t *dispatchmgr, const isc_sockaddr_t *destaddr) {
 }
 
 static isc_result_t
-create_tcp_dispatch(bool newtcp, bool share, dns_requestmgr_t *requestmgr,
+create_tcp_dispatch(bool newtcp, dns_requestmgr_t *requestmgr,
                    const isc_sockaddr_t *srcaddr,
                    const isc_sockaddr_t *destaddr, isc_dscp_t dscp,
                    bool *connected, dns_dispatch_t **dispatchp) {
@@ -522,7 +522,7 @@ create_tcp_dispatch(bool newtcp, bool share, dns_requestmgr_t *requestmgr,
        unsigned int attrs;
        isc_sockaddr_t bind_any;
 
-       if (!newtcp && share) {
+       if (!newtcp) {
                result = dns_dispatch_gettcp(requestmgr->dispatchmgr, destaddr,
                                             srcaddr, connected, dispatchp);
                if (result == ISC_R_SUCCESS) {
@@ -535,20 +535,6 @@ create_tcp_dispatch(bool newtcp, bool share, dns_requestmgr_t *requestmgr,
                                *connected ? "existing" : "pending", peer);
                        return (result);
                }
-       } else if (!newtcp) {
-               result = dns_dispatch_gettcp(requestmgr->dispatchmgr, destaddr,
-                                            srcaddr, NULL, dispatchp);
-               if (result == ISC_R_SUCCESS) {
-                       char peer[ISC_SOCKADDR_FORMATSIZE];
-
-                       *connected = true;
-                       isc_sockaddr_format(destaddr, peer, sizeof(peer));
-                       req_log(ISC_LOG_DEBUG(1),
-                               "attached to existing TCP "
-                               "connection to %s",
-                               peer);
-                       return (result);
-               }
        }
 
        result = isc_socket_create(requestmgr->socketmgr,
@@ -635,13 +621,13 @@ find_udp_dispatch(dns_requestmgr_t *requestmgr, const isc_sockaddr_t *srcaddr,
 }
 
 static isc_result_t
-get_dispatch(bool tcp, bool newtcp, bool share, dns_requestmgr_t *requestmgr,
+get_dispatch(bool tcp, bool newtcp, dns_requestmgr_t *requestmgr,
             const isc_sockaddr_t *srcaddr, const isc_sockaddr_t *destaddr,
             isc_dscp_t dscp, bool *connected, dns_dispatch_t **dispatchp) {
        isc_result_t result;
 
        if (tcp) {
-               result = create_tcp_dispatch(newtcp, share, requestmgr, srcaddr,
+               result = create_tcp_dispatch(newtcp, requestmgr, srcaddr,
                                             destaddr, dscp, connected,
                                             dispatchp);
        } else {
@@ -686,7 +672,6 @@ dns_request_createraw(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf,
        dns_messageid_t id;
        bool tcp = false;
        bool newtcp = false;
-       bool share = false;
        isc_region_t r;
        bool connected = false;
        unsigned int dispopt = 0;
@@ -752,11 +737,10 @@ dns_request_createraw(dns_requestmgr_t *requestmgr, isc_buffer_t *msgbuf,
        if ((options & DNS_REQUESTOPT_TCP) != 0 || r.length > 512) {
                tcp = true;
        }
-       share = (options & DNS_REQUESTOPT_SHARE);
 
 again:
-       result = get_dispatch(tcp, newtcp, share, requestmgr, srcaddr, destaddr,
-                             dscp, &connected, &request->dispatch);
+       result = get_dispatch(tcp, newtcp, requestmgr, srcaddr, destaddr, dscp,
+                             &connected, &request->dispatch);
        if (result != ISC_R_SUCCESS) {
                goto cleanup;
        }
@@ -876,7 +860,6 @@ dns_request_createvia(dns_requestmgr_t *requestmgr, dns_message_t *message,
        isc_mem_t *mctx;
        dns_messageid_t id;
        bool tcp;
-       bool share;
        bool settsigkey = true;
        bool connected = false;
 
@@ -939,9 +922,8 @@ dns_request_createvia(dns_requestmgr_t *requestmgr, dns_message_t *message,
 
 use_tcp:
        tcp = ((options & DNS_REQUESTOPT_TCP) != 0);
-       share = ((options & DNS_REQUESTOPT_SHARE) != 0);
-       result = get_dispatch(tcp, false, share, requestmgr, srcaddr, destaddr,
-                             dscp, &connected, &request->dispatch);
+       result = get_dispatch(tcp, false, requestmgr, srcaddr, destaddr, dscp,
+                             &connected, &request->dispatch);
        if (result != ISC_R_SUCCESS) {
                goto cleanup;
        }