]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
BIND: use Stream DNS for DNS over TCP connections
authorArtem Boldariev <artem@boldariev.com>
Fri, 5 Aug 2022 16:43:34 +0000 (19:43 +0300)
committerArtem Boldariev <artem@boldariev.com>
Tue, 20 Dec 2022 20:13:53 +0000 (22:13 +0200)
This commit makes BIND use the new Stream DNS transport for DNS over
TCP.

bin/tests/test_server.c
lib/dns/dispatch.c
lib/dns/xfrin.c
lib/isccfg/aclconf.c
lib/ns/interfacemgr.c

index 3ff507c28c15738dee9a4e9149c33dd57c2ee395..05acf8430a5cfad8c91bcf822af47ff254d0ecdc 100644 (file)
@@ -249,9 +249,9 @@ run(void) {
                                          read_cb, NULL, &sock);
                break;
        case TCP:
-               result = isc_nm_listentcpdns(netmgr, ISC_NM_LISTEN_ALL,
-                                            &sockaddr, read_cb, NULL,
-                                            accept_cb, NULL, 0, NULL, &sock);
+               result = isc_nm_listenstreamdns(
+                       netmgr, ISC_NM_LISTEN_ALL, &sockaddr, read_cb, NULL,
+                       accept_cb, NULL, 0, NULL, NULL, &sock);
                break;
        case DOT: {
                isc_tlsctx_createserver(NULL, NULL, &tls_ctx);
index fc326970f3e82a3d1376f838a7e0dd1587bf71be..ce315eb9229f8797bce707f0e0b19d9909fb8904 100644 (file)
@@ -2036,13 +2036,14 @@ tcp_dispatch_connect(dns_dispatch_t *disp, dns_dispentry_t *resp) {
                              peerbuf, resp->timeout);
 
                if (transport_type == DNS_TRANSPORT_TLS) {
-                       isc_nm_tlsdnsconnect(disp->mgr->nm, &disp->local,
-                                            &disp->peer, tcp_connected, disp,
-                                            resp->timeout, tlsctx, sess_cache);
+                       isc_nm_streamdnsconnect(disp->mgr->nm, &disp->local,
+                                               &disp->peer, tcp_connected,
+                                               disp, resp->timeout, tlsctx,
+                                               sess_cache);
                } else {
-                       isc_nm_tcpdnsconnect(disp->mgr->nm, &disp->local,
-                                            &disp->peer, tcp_connected, disp,
-                                            resp->timeout);
+                       isc_nm_streamdnsconnect(
+                               disp->mgr->nm, &disp->local, &disp->peer,
+                               tcp_connected, disp, resp->timeout, NULL, NULL);
                }
                break;
 
index b2c102b4799d645ecf495a3e211c98f1478d1c17..ff1e524c0fd76bdab64abe6500cfb0fd896dec5f 100644 (file)
@@ -952,9 +952,9 @@ xfrin_start(dns_xfrin_ctx_t *xfr) {
         */
        switch (transport_type) {
        case DNS_TRANSPORT_TCP:
-               isc_nm_tcpdnsconnect(xfr->netmgr, &xfr->sourceaddr,
-                                    &xfr->primaryaddr, xfrin_connect_done,
-                                    connect_xfr, 30000);
+               isc_nm_streamdnsconnect(xfr->netmgr, &xfr->sourceaddr,
+                                       &xfr->primaryaddr, xfrin_connect_done,
+                                       connect_xfr, 30000, NULL, NULL);
                break;
        case DNS_TRANSPORT_TLS: {
                result = dns_transport_get_tlsctx(
index c98067326787ae9f2e1cd0877ee13f8cd132dffa..e72134c8a70e14929e14c8c28718d73b4b146f0c 100644 (file)
@@ -719,13 +719,13 @@ cfg_acl_fromconfig2(const cfg_obj_t *acl_data, const cfg_obj_t *cctx,
                        } else if (strcasecmp(cfg_obj_asstring(obj_transport),
                                              "tcp") == 0)
                        {
-                               transports = isc_nm_tcpdnssocket;
+                               transports = isc_nm_streamdnssocket;
                                encrypted = false;
                        } else if (strcasecmp(cfg_obj_asstring(obj_transport),
                                              "udp-tcp") == 0)
                        {
                                /* Good ol' DNS over port 53 */
-                               transports = isc_nm_tcpdnssocket |
+                               transports = isc_nm_streamdnssocket |
                                             isc_nm_udpsocket;
                                encrypted = false;
                        } else if (strcasecmp(cfg_obj_asstring(obj_transport),
index 22b54cce26024f68f3430ed2b568b18787f58bd9..d9ccdeced8d05e2667d9699f207af24e8194aa9d 100644 (file)
@@ -503,10 +503,10 @@ static isc_result_t
 ns_interface_listentcp(ns_interface_t *ifp) {
        isc_result_t result;
 
-       result = isc_nm_listentcpdns(
+       result = isc_nm_listenstreamdns(
                ifp->mgr->nm, ISC_NM_LISTEN_ALL, &ifp->addr, ns__client_request,
                ifp, ns__client_tcpconn, ifp, ifp->mgr->backlog,
-               &ifp->mgr->sctx->tcpquota, &ifp->tcplistensocket);
+               &ifp->mgr->sctx->tcpquota, NULL, &ifp->tcplistensocket);
        if (result != ISC_R_SUCCESS) {
                isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_ERROR,
                              "creating TCP socket: %s",