From f55a4d3e558d4586dd5454f07d603249f93aee27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Fri, 25 Mar 2022 16:44:21 +0100 Subject: [PATCH 1/2] Allow listening on less than nworkers threads For some applications, it's useful to not listen on full battery of threads. Add workers argument to all isc_nm_listen*() functions and convenience ISC_NM_LISTEN_ONE and ISC_NM_LISTEN_ALL macros. --- bin/named/controlconf.c | 6 +- bin/tests/test_server.c | 18 +-- lib/dns/tests/dispatch_test.c | 16 +-- lib/isc/httpd.c | 4 +- lib/isc/include/isc/netmgr.h | 22 ++-- lib/isc/netmgr/http.c | 14 ++- lib/isc/netmgr/tcp.c | 6 +- lib/isc/netmgr/tcpdns.c | 6 +- lib/isc/netmgr/tlsdns.c | 6 +- lib/isc/netmgr/tlsstream.c | 6 +- lib/isc/netmgr/udp.c | 8 +- lib/isc/tests/doh_test.c | 43 ++++--- lib/isc/tests/netmgr_test.c | 203 ++++++++++++++++++---------------- lib/ns/interfacemgr.c | 20 ++-- 14 files changed, 214 insertions(+), 164 deletions(-) diff --git a/bin/named/controlconf.c b/bin/named/controlconf.c index 848fb644c0..7adae569e1 100644 --- a/bin/named/controlconf.c +++ b/bin/named/controlconf.c @@ -1163,9 +1163,9 @@ add_listener(named_controls_t *cp, controllistener_t **listenerp, } #endif - CHECK(isc_nm_listentcp(named_g_netmgr, &listener->address, - control_newconn, listener, 5, NULL, - &listener->sock)); + CHECK(isc_nm_listentcp(named_g_netmgr, ISC_NM_LISTEN_ONE, + &listener->address, control_newconn, listener, 5, + NULL, &listener->sock)); #if 0 /* XXX: no unix socket support yet */ if (type == isc_socktype_unix) { diff --git a/bin/tests/test_server.c b/bin/tests/test_server.c index 2d80db4457..e1c59c8b82 100644 --- a/bin/tests/test_server.c +++ b/bin/tests/test_server.c @@ -266,19 +266,20 @@ run(void) { switch (protocol) { case UDP: - result = isc_nm_listenudp(netmgr, &sockaddr, read_cb, NULL, - &sock); + result = isc_nm_listenudp(netmgr, ISC_NM_LISTEN_ALL, &sockaddr, + read_cb, NULL, &sock); break; case TCP: - result = isc_nm_listentcpdns(netmgr, &sockaddr, read_cb, NULL, + result = isc_nm_listentcpdns(netmgr, ISC_NM_LISTEN_ALL, + &sockaddr, read_cb, NULL, accept_cb, NULL, 0, NULL, &sock); break; case DOT: { isc_tlsctx_createserver(NULL, NULL, &tls_ctx); - result = isc_nm_listentlsdns(netmgr, &sockaddr, read_cb, NULL, - accept_cb, NULL, 0, NULL, tls_ctx, - &sock); + result = isc_nm_listentlsdns( + netmgr, ISC_NM_LISTEN_ALL, &sockaddr, read_cb, NULL, + accept_cb, NULL, 0, NULL, tls_ctx, &sock); break; } #if HAVE_LIBNGHTTP2 @@ -294,8 +295,9 @@ run(void) { eps, ISC_NM_HTTP_DEFAULT_PATH, read_cb, NULL); if (result == ISC_R_SUCCESS) { - result = isc_nm_listenhttp(netmgr, &sockaddr, 0, NULL, - tls_ctx, eps, 0, &sock); + result = isc_nm_listenhttp(netmgr, ISC_NM_LISTEN_ALL, + &sockaddr, 0, NULL, tls_ctx, + eps, 0, &sock); } isc_nm_http_endpoints_detach(&eps); } break; diff --git a/lib/dns/tests/dispatch_test.c b/lib/dns/tests/dispatch_test.c index ea4afca338..f51c05332e 100644 --- a/lib/dns/tests/dispatch_test.c +++ b/lib/dns/tests/dispatch_test.c @@ -510,8 +510,9 @@ dispatch_timeout_tcp_response(void **state __attribute__((unused))) { &tcp_server_addr, -1, &dispatch); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listentcpdns(netmgr, &tcp_server_addr, noop_nameserver, - NULL, accept_cb, NULL, 0, NULL, &sock); + result = isc_nm_listentcpdns(netmgr, ISC_NM_LISTEN_ONE, + &tcp_server_addr, noop_nameserver, NULL, + accept_cb, NULL, 0, NULL, &sock); assert_int_equal(result, ISC_R_SUCCESS); region.base = rbuf; @@ -566,7 +567,8 @@ dispatch_tcp_response(void **state __attribute__((unused))) { &tcp_server_addr, -1, &dispatch); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listentcpdns(netmgr, &tcp_server_addr, nameserver, NULL, + result = isc_nm_listentcpdns(netmgr, ISC_NM_LISTEN_ONE, + &tcp_server_addr, nameserver, NULL, accept_cb, NULL, 0, NULL, &sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -625,8 +627,8 @@ dispatch_timeout_udp_response(void **state __attribute__((unused))) { &dispatch); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listenudp(netmgr, &udp_server_addr, noop_nameserver, - NULL, &sock); + result = isc_nm_listenudp(netmgr, ISC_NM_LISTEN_ONE, &udp_server_addr, + noop_nameserver, NULL, &sock); assert_int_equal(result, ISC_R_SUCCESS); region.base = rbuf; @@ -682,8 +684,8 @@ dispatch_getnext(void **state) { /* * Create a local udp nameserver on the loopback. */ - result = isc_nm_listenudp(netmgr, &udp_server_addr, nameserver, NULL, - &sock); + result = isc_nm_listenudp(netmgr, ISC_NM_LISTEN_ONE, &udp_server_addr, + nameserver, NULL, &sock); assert_int_equal(result, ISC_R_SUCCESS); region.base = rbuf; diff --git a/lib/isc/httpd.c b/lib/isc/httpd.c index e0a35d6e81..278683121f 100644 --- a/lib/isc/httpd.c +++ b/lib/isc/httpd.c @@ -231,8 +231,8 @@ isc_httpdmgr_create(isc_nm_t *nm, isc_mem_t *mctx, isc_sockaddr_t *addr, isc_refcount_init(&httpdmgr->references, 1); - CHECK(isc_nm_listentcp(nm, addr, httpd_newconn, httpdmgr, 5, NULL, - &httpdmgr->sock)); + CHECK(isc_nm_listentcp(nm, ISC_NM_LISTEN_ONE, addr, httpd_newconn, + httpdmgr, 5, NULL, &httpdmgr->sock)); httpdmgr->magic = HTTPDMGR_MAGIC; *httpdmgrp = httpdmgr; diff --git a/lib/isc/include/isc/netmgr.h b/lib/isc/include/isc/netmgr.h index 4651bbf4cf..43e5501b67 100644 --- a/lib/isc/include/isc/netmgr.h +++ b/lib/isc/include/isc/netmgr.h @@ -28,6 +28,12 @@ #define HAVE_SO_REUSEPORT_LB 1 #endif +/* + * Convenience macros to specify on how many threads should socket listen + */ +#define ISC_NM_LISTEN_ALL 0 +#define ISC_NM_LISTEN_ONE 1 + /* * Replacement for isc_sockettype_t provided by socket.h. */ @@ -217,8 +223,8 @@ isc_nmhandle_netmgr(isc_nmhandle_t *handle); */ isc_result_t -isc_nm_listenudp(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nm_recv_cb_t cb, - void *cbarg, isc_nmsocket_t **sockp); +isc_nm_listenudp(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, + isc_nm_recv_cb_t cb, void *cbarg, isc_nmsocket_t **sockp); /*%< * Start listening for UDP packets on interface 'iface' using net manager * 'mgr'. @@ -324,7 +330,7 @@ isc_nm_send(isc_nmhandle_t *handle, isc_region_t *region, isc_nm_cb_t cb, */ isc_result_t -isc_nm_listentcp(isc_nm_t *mgr, isc_sockaddr_t *iface, +isc_nm_listentcp(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, isc_nm_accept_cb_t accept_cb, void *accept_cbarg, int backlog, isc_quota_t *quota, isc_nmsocket_t **sockp); /*%< @@ -359,7 +365,7 @@ isc_nm_tcpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, */ isc_result_t -isc_nm_listentcpdns(isc_nm_t *mgr, isc_sockaddr_t *iface, +isc_nm_listentcpdns(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, isc_nm_recv_cb_t recv_cb, void *recv_cbarg, isc_nm_accept_cb_t accept_cb, void *accept_cbarg, int backlog, isc_quota_t *quota, isc_nmsocket_t **sockp); @@ -383,7 +389,7 @@ isc_nm_listentcpdns(isc_nm_t *mgr, isc_sockaddr_t *iface, */ isc_result_t -isc_nm_listentlsdns(isc_nm_t *mgr, isc_sockaddr_t *iface, +isc_nm_listentlsdns(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, isc_nm_recv_cb_t recv_cb, void *recv_cbarg, isc_nm_accept_cb_t accept_cb, void *accept_cbarg, int backlog, isc_quota_t *quota, isc_tlsctx_t *sslctx, @@ -507,7 +513,7 @@ isc_nm_is_http_handle(isc_nmhandle_t *handle); #define ISC_NM_HTTP_DEFAULT_PATH "/dns-query" isc_result_t -isc_nm_listentls(isc_nm_t *mgr, isc_sockaddr_t *iface, +isc_nm_listentls(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, isc_nm_accept_cb_t accept_cb, void *accept_cbarg, int backlog, isc_quota_t *quota, isc_tlsctx_t *sslctx, isc_nmsocket_t **sockp); @@ -523,8 +529,8 @@ isc_nm_httpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, isc_tlsctx_t *ctx, unsigned int timeout); isc_result_t -isc_nm_listenhttp(isc_nm_t *mgr, isc_sockaddr_t *iface, int backlog, - isc_quota_t *quota, isc_tlsctx_t *ctx, +isc_nm_listenhttp(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, + int backlog, isc_quota_t *quota, isc_tlsctx_t *ctx, isc_nm_http_endpoints_t *eps, uint32_t max_concurrent_streams, isc_nmsocket_t **sockp); diff --git a/lib/isc/netmgr/http.c b/lib/isc/netmgr/http.c index 1d59ee3c30..98b2104025 100644 --- a/lib/isc/netmgr/http.c +++ b/lib/isc/netmgr/http.c @@ -2461,8 +2461,8 @@ httplisten_acceptcb(isc_nmhandle_t *handle, isc_result_t result, void *cbarg) { } isc_result_t -isc_nm_listenhttp(isc_nm_t *mgr, isc_sockaddr_t *iface, int backlog, - isc_quota_t *quota, isc_tlsctx_t *ctx, +isc_nm_listenhttp(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, + int backlog, isc_quota_t *quota, isc_tlsctx_t *ctx, isc_nm_http_endpoints_t *eps, uint32_t max_concurrent_streams, isc_nmsocket_t **sockp) { isc_nmsocket_t *sock = NULL; @@ -2487,11 +2487,13 @@ isc_nm_listenhttp(isc_nm_t *mgr, isc_sockaddr_t *iface, int backlog, isc_nm_http_endpoints_attach(eps, &sock->h2.listener_endpoints); if (ctx != NULL) { - result = isc_nm_listentls(mgr, iface, httplisten_acceptcb, sock, - backlog, quota, ctx, &sock->outer); + result = isc_nm_listentls(mgr, workers, iface, + httplisten_acceptcb, sock, backlog, + quota, ctx, &sock->outer); } else { - result = isc_nm_listentcp(mgr, iface, httplisten_acceptcb, sock, - backlog, quota, &sock->outer); + result = isc_nm_listentcp(mgr, workers, iface, + httplisten_acceptcb, sock, backlog, + quota, &sock->outer); } if (result != ISC_R_SUCCESS) { diff --git a/lib/isc/netmgr/tcp.c b/lib/isc/netmgr/tcp.c index 680e983b44..e7eb77feb5 100644 --- a/lib/isc/netmgr/tcp.c +++ b/lib/isc/netmgr/tcp.c @@ -425,7 +425,7 @@ enqueue_stoplistening(isc_nmsocket_t *sock) { } isc_result_t -isc_nm_listentcp(isc_nm_t *mgr, isc_sockaddr_t *iface, +isc_nm_listentcp(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, isc_nm_accept_cb_t accept_cb, void *accept_cbarg, int backlog, isc_quota_t *quota, isc_nmsocket_t **sockp) { isc_result_t result = ISC_R_SUCCESS; @@ -439,7 +439,9 @@ isc_nm_listentcp(isc_nm_t *mgr, isc_sockaddr_t *iface, isc__nmsocket_init(sock, mgr, isc_nm_tcplistener, iface); atomic_init(&sock->rchildren, 0); - sock->nchildren = mgr->nworkers; + sock->nchildren = (workers == ISC_NM_LISTEN_ALL) + ? (uint32_t)mgr->nworkers + : workers; children_size = sock->nchildren * sizeof(sock->children[0]); sock->children = isc_mem_get(mgr->mctx, children_size); memset(sock->children, 0, children_size); diff --git a/lib/isc/netmgr/tcpdns.c b/lib/isc/netmgr/tcpdns.c index b2dbeebda5..73753742ea 100644 --- a/lib/isc/netmgr/tcpdns.c +++ b/lib/isc/netmgr/tcpdns.c @@ -389,7 +389,7 @@ start_tcpdns_child(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nmsocket_t *sock, (isc__netievent_t *)ievent); } isc_result_t -isc_nm_listentcpdns(isc_nm_t *mgr, isc_sockaddr_t *iface, +isc_nm_listentcpdns(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, isc_nm_recv_cb_t recv_cb, void *recv_cbarg, isc_nm_accept_cb_t accept_cb, void *accept_cbarg, int backlog, isc_quota_t *quota, isc_nmsocket_t **sockp) { @@ -404,7 +404,9 @@ isc_nm_listentcpdns(isc_nm_t *mgr, isc_sockaddr_t *iface, isc__nmsocket_init(sock, mgr, isc_nm_tcpdnslistener, iface); atomic_init(&sock->rchildren, 0); - sock->nchildren = mgr->nworkers; + sock->nchildren = (workers == ISC_NM_LISTEN_ALL) + ? (uint32_t)mgr->nworkers + : workers; children_size = sock->nchildren * sizeof(sock->children[0]); sock->children = isc_mem_get(mgr->mctx, children_size); memset(sock->children, 0, children_size); diff --git a/lib/isc/netmgr/tlsdns.c b/lib/isc/netmgr/tlsdns.c index 96612c1a85..afbb3db2ac 100644 --- a/lib/isc/netmgr/tlsdns.c +++ b/lib/isc/netmgr/tlsdns.c @@ -470,7 +470,7 @@ enqueue_stoplistening(isc_nmsocket_t *sock) { } isc_result_t -isc_nm_listentlsdns(isc_nm_t *mgr, isc_sockaddr_t *iface, +isc_nm_listentlsdns(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, isc_nm_recv_cb_t recv_cb, void *recv_cbarg, isc_nm_accept_cb_t accept_cb, void *accept_cbarg, int backlog, isc_quota_t *quota, isc_tlsctx_t *sslctx, @@ -486,7 +486,9 @@ isc_nm_listentlsdns(isc_nm_t *mgr, isc_sockaddr_t *iface, isc__nmsocket_init(sock, mgr, isc_nm_tlsdnslistener, iface); atomic_init(&sock->rchildren, 0); - sock->nchildren = mgr->nworkers; + sock->nchildren = (workers == ISC_NM_LISTEN_ALL) + ? (uint32_t)mgr->nworkers + : workers; children_size = sock->nchildren * sizeof(sock->children[0]); sock->children = isc_mem_get(mgr->mctx, children_size); memset(sock->children, 0, children_size); diff --git a/lib/isc/netmgr/tlsstream.c b/lib/isc/netmgr/tlsstream.c index 9ec072897e..c7d7fafd33 100644 --- a/lib/isc/netmgr/tlsstream.c +++ b/lib/isc/netmgr/tlsstream.c @@ -642,7 +642,7 @@ tlslisten_acceptcb(isc_nmhandle_t *handle, isc_result_t result, void *cbarg) { } isc_result_t -isc_nm_listentls(isc_nm_t *mgr, isc_sockaddr_t *iface, +isc_nm_listentls(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, isc_nm_accept_cb_t accept_cb, void *accept_cbarg, int backlog, isc_quota_t *quota, SSL_CTX *sslctx, isc_nmsocket_t **sockp) { isc_result_t result; @@ -664,8 +664,8 @@ isc_nm_listentls(isc_nm_t *mgr, isc_sockaddr_t *iface, * tlssock will be a TLS 'wrapper' around an unencrypted stream. * We set tlssock->outer to a socket listening for a TCP connection. */ - result = isc_nm_listentcp(mgr, iface, tlslisten_acceptcb, tlssock, - backlog, quota, &tlssock->outer); + result = isc_nm_listentcp(mgr, workers, iface, tlslisten_acceptcb, + tlssock, backlog, quota, &tlssock->outer); if (result != ISC_R_SUCCESS) { atomic_store(&tlssock->closed, true); isc__nmsocket_detach(&tlssock); diff --git a/lib/isc/netmgr/udp.c b/lib/isc/netmgr/udp.c index 587366282d..4c0848fdea 100644 --- a/lib/isc/netmgr/udp.c +++ b/lib/isc/netmgr/udp.c @@ -146,8 +146,8 @@ enqueue_stoplistening(isc_nmsocket_t *sock) { } isc_result_t -isc_nm_listenudp(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nm_recv_cb_t cb, - void *cbarg, isc_nmsocket_t **sockp) { +isc_nm_listenudp(isc_nm_t *mgr, uint32_t workers, isc_sockaddr_t *iface, + isc_nm_recv_cb_t cb, void *cbarg, isc_nmsocket_t **sockp) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *sock = NULL; size_t children_size = 0; @@ -162,7 +162,9 @@ isc_nm_listenudp(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nm_recv_cb_t cb, isc__nmsocket_init(sock, mgr, isc_nm_udplistener, iface); atomic_init(&sock->rchildren, 0); - sock->nchildren = mgr->nworkers; + sock->nchildren = (workers == ISC_NM_LISTEN_ALL) + ? (uint32_t)mgr->nworkers + : workers; children_size = sock->nchildren * sizeof(sock->children[0]); sock->children = isc_mem_get(mgr->mctx, children_size); memset(sock->children, 0, children_size); diff --git a/lib/isc/tests/doh_test.c b/lib/isc/tests/doh_test.c index 65c5ec6106..2d7907d500 100644 --- a/lib/isc/tests/doh_test.c +++ b/lib/isc/tests/doh_test.c @@ -474,8 +474,9 @@ mock_doh_uv_tcp_bind(void **state) { result = isc_nm_http_endpoints_add(endpoints, ISC_NM_HTTP_DEFAULT_PATH, noop_read_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, NULL, NULL, - endpoints, 0, &listen_sock); + result = isc_nm_listenhttp(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, 0, NULL, NULL, endpoints, + 0, &listen_sock); assert_int_not_equal(result, ISC_R_SUCCESS); assert_null(listen_sock); @@ -495,8 +496,9 @@ doh_noop(void **state) { noop_read_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, NULL, NULL, - endpoints, 0, &listen_sock); + result = isc_nm_listenhttp(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, 0, NULL, NULL, endpoints, + 0, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_nm_stoplistening(listen_sock); @@ -543,8 +545,9 @@ doh_noresponse(void **state) { noop_read_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, NULL, NULL, - endpoints, 0, &listen_sock); + result = isc_nm_listenhttp(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, 0, NULL, NULL, endpoints, + 0, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); sockaddr_to_url(&tcp_listen_addr, false, req_url, sizeof(req_url), @@ -644,8 +647,9 @@ doh_timeout_recovery(void **state) { doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, NULL, NULL, - endpoints, 0, &listen_sock); + result = isc_nm_listenhttp(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, 0, NULL, NULL, endpoints, + 0, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); /* @@ -776,7 +780,8 @@ doh_recv_one(void **state) { doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, + result = isc_nm_listenhttp(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, 0, quotap, atomic_load(&use_TLS) ? server_tlsctx : NULL, endpoints, 0, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -927,7 +932,8 @@ doh_recv_two(void **state) { doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, + result = isc_nm_listenhttp(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, 0, quotap, atomic_load(&use_TLS) ? server_tlsctx : NULL, endpoints, 0, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -1047,7 +1053,8 @@ doh_recv_send(void **state) { doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, + result = isc_nm_listenhttp(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, 0, quotap, atomic_load(&use_TLS) ? server_tlsctx : NULL, endpoints, 0, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -1160,7 +1167,8 @@ doh_recv_half_send(void **state) { doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, + result = isc_nm_listenhttp(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, 0, quotap, atomic_load(&use_TLS) ? server_tlsctx : NULL, endpoints, 0, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -1270,7 +1278,8 @@ doh_half_recv_send(void **state) { doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, + result = isc_nm_listenhttp(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, 0, quotap, atomic_load(&use_TLS) ? server_tlsctx : NULL, endpoints, 0, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -1380,7 +1389,8 @@ doh_half_recv_half_send(void **state) { doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, + result = isc_nm_listenhttp(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, 0, quotap, atomic_load(&use_TLS) ? server_tlsctx : NULL, endpoints, 0, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -1489,8 +1499,9 @@ doh_bad_connect_uri(void **state) { doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); - result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, - server_tlsctx, endpoints, 0, &listen_sock); + result = isc_nm_listenhttp(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, 0, quotap, server_tlsctx, + endpoints, 0, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); /* diff --git a/lib/isc/tests/netmgr_test.c b/lib/isc/tests/netmgr_test.c index dbf3b695c3..62353dd0b7 100644 --- a/lib/isc/tests/netmgr_test.c +++ b/lib/isc/tests/netmgr_test.c @@ -633,8 +633,9 @@ mock_listenudp_uv_udp_open(void **state __attribute__((unused))) { WILL_RETURN(uv_udp_open, UV_ENOMEM); - result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb, - NULL, &listen_sock); + result = isc_nm_listenudp(listen_nm, ISC_NM_LISTEN_ALL, + &udp_listen_addr, noop_recv_cb, NULL, + &listen_sock); assert_int_not_equal(result, ISC_R_SUCCESS); assert_null(listen_sock); @@ -648,8 +649,9 @@ mock_listenudp_uv_udp_bind(void **state __attribute__((unused))) { WILL_RETURN(uv_udp_bind, UV_EADDRINUSE); - result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb, - NULL, &listen_sock); + result = isc_nm_listenudp(listen_nm, ISC_NM_LISTEN_ALL, + &udp_listen_addr, noop_recv_cb, NULL, + &listen_sock); assert_int_not_equal(result, ISC_R_SUCCESS); assert_null(listen_sock); @@ -663,8 +665,9 @@ mock_listenudp_uv_udp_recv_start(void **state __attribute__((unused))) { WILL_RETURN(uv_udp_recv_start, UV_EADDRINUSE); - result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb, - NULL, &listen_sock); + result = isc_nm_listenudp(listen_nm, ISC_NM_LISTEN_ALL, + &udp_listen_addr, noop_recv_cb, NULL, + &listen_sock); assert_int_not_equal(result, ISC_R_SUCCESS); assert_null(listen_sock); @@ -743,8 +746,9 @@ udp_noop(void **state __attribute__((unused))) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *listen_sock = NULL; - result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb, - NULL, &listen_sock); + result = isc_nm_listenudp(listen_nm, ISC_NM_LISTEN_ALL, + &udp_listen_addr, noop_recv_cb, NULL, + &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_nm_stoplistening(listen_sock); @@ -769,8 +773,9 @@ udp_noresponse(void **state __attribute__((unused))) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *listen_sock = NULL; - result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb, - NULL, &listen_sock); + result = isc_nm_listenudp(listen_nm, ISC_NM_LISTEN_ALL, + &udp_listen_addr, noop_recv_cb, NULL, + &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); @@ -830,8 +835,9 @@ udp_timeout_recovery(void **state __attribute__((unused))) { /* * Listen using the noop callback so that client reads will time out. */ - result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb, - NULL, &listen_sock); + result = isc_nm_listenudp(listen_nm, ISC_NM_LISTEN_ALL, + &udp_listen_addr, noop_recv_cb, NULL, + &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); /* @@ -865,8 +871,9 @@ udp_recv_one(void **state __attribute__((unused))) { atomic_store(&nsends, 1); - result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb, - NULL, &listen_sock); + result = isc_nm_listenudp(listen_nm, ISC_NM_LISTEN_ALL, + &udp_listen_addr, listen_read_cb, NULL, + &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); @@ -905,8 +912,9 @@ udp_recv_two(void **state __attribute__((unused))) { atomic_store(&nsends, 2); - result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb, - NULL, &listen_sock); + result = isc_nm_listenudp(listen_nm, ISC_NM_LISTEN_ALL, + &udp_listen_addr, listen_read_cb, NULL, + &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); @@ -952,8 +960,9 @@ udp_recv_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb, - NULL, &listen_sock); + result = isc_nm_listenudp(listen_nm, ISC_NM_LISTEN_ALL, + &udp_listen_addr, listen_read_cb, NULL, + &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -997,8 +1006,9 @@ udp_recv_half_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb, - NULL, &listen_sock); + result = isc_nm_listenudp(listen_nm, ISC_NM_LISTEN_ALL, + &udp_listen_addr, listen_read_cb, NULL, + &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -1043,8 +1053,9 @@ udp_half_recv_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb, - NULL, &listen_sock); + result = isc_nm_listenudp(listen_nm, ISC_NM_LISTEN_ALL, + &udp_listen_addr, listen_read_cb, NULL, + &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -1092,8 +1103,9 @@ udp_half_recv_half_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb, - NULL, &listen_sock); + result = isc_nm_listenudp(listen_nm, ISC_NM_LISTEN_ALL, + &udp_listen_addr, listen_read_cb, NULL, + &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -1170,14 +1182,16 @@ stream_listen(isc_nm_accept_cb_t accept_cb, void *accept_cbarg, int backlog, #if HAVE_LIBNGHTTP2 if (stream_use_TLS) { - result = isc_nm_listentls(listen_nm, &tcp_listen_addr, - accept_cb, accept_cbarg, backlog, - quota, tcp_listen_tlsctx, sockp); + result = isc_nm_listentls(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, accept_cb, + accept_cbarg, backlog, quota, + tcp_listen_tlsctx, sockp); return (result); } #endif - result = isc_nm_listentcp(listen_nm, &tcp_listen_addr, accept_cb, - accept_cbarg, backlog, quota, sockp); + result = isc_nm_listentcp(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, accept_cb, accept_cbarg, + backlog, quota, sockp); return (result); } @@ -1738,9 +1752,9 @@ tcpdns_noop(void **state __attribute__((unused))) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *listen_sock = NULL; - result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, noop_recv_cb, - NULL, noop_accept_cb, NULL, 0, NULL, - &listen_sock); + result = isc_nm_listentcpdns( + listen_nm, ISC_NM_LISTEN_ALL, &tcp_listen_addr, noop_recv_cb, + NULL, noop_accept_cb, NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_nm_stoplistening(listen_sock); @@ -1766,9 +1780,9 @@ tcpdns_noresponse(void **state __attribute__((unused))) { isc_nmsocket_t *listen_sock = NULL; isc_refcount_increment0(&active_cconnects); - result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, noop_recv_cb, - NULL, noop_accept_cb, NULL, 0, NULL, - &listen_sock); + result = isc_nm_listentcpdns( + listen_nm, ISC_NM_LISTEN_ALL, &tcp_listen_addr, noop_recv_cb, + NULL, noop_accept_cb, NULL, 0, NULL, &listen_sock); if (result != ISC_R_SUCCESS) { isc_refcount_decrement(&active_cconnects); isc_test_nap(1000); @@ -1811,9 +1825,9 @@ tcpdns_timeout_recovery(void **state __attribute__((unused))) { * reads to time out. */ noanswer = true; - result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, &listen_sock); + result = isc_nm_listentcpdns( + listen_nm, ISC_NM_LISTEN_ALL, &tcp_listen_addr, listen_read_cb, + NULL, listen_accept_cb, NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); /* @@ -1848,9 +1862,9 @@ tcpdns_recv_one(void **state __attribute__((unused))) { atomic_store(&nsends, 1); - result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, &listen_sock); + result = isc_nm_listentcpdns( + listen_nm, ISC_NM_LISTEN_ALL, &tcp_listen_addr, listen_read_cb, + NULL, listen_accept_cb, NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); @@ -1889,9 +1903,9 @@ tcpdns_recv_two(void **state __attribute__((unused))) { atomic_store(&nsends, 2); - result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, &listen_sock); + result = isc_nm_listentcpdns( + listen_nm, ISC_NM_LISTEN_ALL, &tcp_listen_addr, listen_read_cb, + NULL, listen_accept_cb, NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); @@ -1938,9 +1952,9 @@ tcpdns_recv_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, &listen_sock); + result = isc_nm_listentcpdns( + listen_nm, ISC_NM_LISTEN_ALL, &tcp_listen_addr, listen_read_cb, + NULL, listen_accept_cb, NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -1984,9 +1998,9 @@ tcpdns_recv_half_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, &listen_sock); + result = isc_nm_listentcpdns( + listen_nm, ISC_NM_LISTEN_ALL, &tcp_listen_addr, listen_read_cb, + NULL, listen_accept_cb, NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -2031,9 +2045,9 @@ tcpdns_half_recv_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, &listen_sock); + result = isc_nm_listentcpdns( + listen_nm, ISC_NM_LISTEN_ALL, &tcp_listen_addr, listen_read_cb, + NULL, listen_accept_cb, NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -2081,9 +2095,9 @@ tcpdns_half_recv_half_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, &listen_sock); + result = isc_nm_listentcpdns( + listen_nm, ISC_NM_LISTEN_ALL, &tcp_listen_addr, listen_read_cb, + NULL, listen_accept_cb, NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -2318,8 +2332,9 @@ tlsdns_noop(void **state __attribute__((unused))) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *listen_sock = NULL; - result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, noop_recv_cb, - NULL, noop_accept_cb, NULL, 0, NULL, + result = isc_nm_listentlsdns(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, noop_recv_cb, NULL, + noop_accept_cb, NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -2351,8 +2366,9 @@ tlsdns_noresponse(void **state __attribute__((unused))) { connect_addr = (isc_sockaddr_t){ .length = 0 }; isc_sockaddr_fromin6(&connect_addr, &in6addr_loopback, 0); - result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, noop_recv_cb, - NULL, noop_accept_cb, NULL, 0, NULL, + result = isc_nm_listentlsdns(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, noop_recv_cb, NULL, + noop_accept_cb, NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -2398,10 +2414,10 @@ tlsdns_timeout_recovery(void **state __attribute__((unused))) { * reads to time out. */ noanswer = true; - result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, tcp_listen_tlsctx, - &listen_sock); + result = isc_nm_listentlsdns(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, listen_read_cb, NULL, + listen_accept_cb, NULL, 0, NULL, + tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); /* @@ -2437,10 +2453,10 @@ tlsdns_recv_one(void **state __attribute__((unused))) { atomic_store(&nsends, 1); - result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, tcp_listen_tlsctx, - &listen_sock); + result = isc_nm_listentlsdns(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, listen_read_cb, NULL, + listen_accept_cb, NULL, 0, NULL, + tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); @@ -2480,10 +2496,10 @@ tlsdns_recv_two(void **state __attribute__((unused))) { atomic_store(&nsends, 2); - result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, tcp_listen_tlsctx, - &listen_sock); + result = isc_nm_listentlsdns(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, listen_read_cb, NULL, + listen_accept_cb, NULL, 0, NULL, + tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); @@ -2532,10 +2548,10 @@ tlsdns_recv_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, tcp_listen_tlsctx, - &listen_sock); + result = isc_nm_listentlsdns(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, listen_read_cb, NULL, + listen_accept_cb, NULL, 0, NULL, + tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -2579,10 +2595,10 @@ tlsdns_recv_half_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, tcp_listen_tlsctx, - &listen_sock); + result = isc_nm_listentlsdns(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, listen_read_cb, NULL, + listen_accept_cb, NULL, 0, NULL, + tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -2627,10 +2643,10 @@ tlsdns_half_recv_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, tcp_listen_tlsctx, - &listen_sock); + result = isc_nm_listentlsdns(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, listen_read_cb, NULL, + listen_accept_cb, NULL, 0, NULL, + tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -2678,10 +2694,10 @@ tlsdns_half_recv_half_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, - listen_read_cb, NULL, listen_accept_cb, - NULL, 0, NULL, tcp_listen_tlsctx, - &listen_sock); + result = isc_nm_listentlsdns(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, listen_read_cb, NULL, + listen_accept_cb, NULL, 0, NULL, + tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -2756,8 +2772,9 @@ tlsdns_connect_noalpn(void **state __attribute__((unused))) { connect_addr = (isc_sockaddr_t){ .length = 0 }; isc_sockaddr_fromin6(&connect_addr, &in6addr_loopback, 0); - result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, noop_recv_cb, - NULL, noop_accept_cb, NULL, 0, NULL, + result = isc_nm_listentlsdns(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, noop_recv_cb, NULL, + noop_accept_cb, NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -2823,9 +2840,9 @@ tlsdns_listen_noalpn(void **state __attribute__((unused))) { /* We use TLS stream listener here intentionally, as it does not * try to do ALPN. */ - result = isc_nm_listentls(listen_nm, &tcp_listen_addr, - tls_accept_cb_noalpn, NULL, 0, NULL, - server_tlsctx_noalpn, &listen_sock); + result = isc_nm_listentls(listen_nm, ISC_NM_LISTEN_ALL, + &tcp_listen_addr, tls_accept_cb_noalpn, NULL, + 0, NULL, server_tlsctx_noalpn, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); diff --git a/lib/ns/interfacemgr.c b/lib/ns/interfacemgr.c index 395aa04e1b..4d278f8503 100644 --- a/lib/ns/interfacemgr.c +++ b/lib/ns/interfacemgr.c @@ -494,8 +494,9 @@ ns_interface_listenudp(ns_interface_t *ifp) { isc_result_t result; /* Reserve space for an ns_client_t with the netmgr handle */ - result = isc_nm_listenudp(ifp->mgr->nm, &ifp->addr, ns__client_request, - ifp, &ifp->udplistensocket); + result = isc_nm_listenudp(ifp->mgr->nm, ISC_NM_LISTEN_ALL, &ifp->addr, + ns__client_request, ifp, + &ifp->udplistensocket); return (result); } @@ -504,8 +505,8 @@ ns_interface_listentcp(ns_interface_t *ifp) { isc_result_t result; result = isc_nm_listentcpdns( - ifp->mgr->nm, &ifp->addr, ns__client_request, ifp, - ns__client_tcpconn, ifp, ifp->mgr->backlog, + 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); if (result != ISC_R_SUCCESS) { isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_ERROR, @@ -544,8 +545,8 @@ ns_interface_listentls(ns_interface_t *ifp, isc_tlsctx_t *sslctx) { isc_result_t result; result = isc_nm_listentlsdns( - ifp->mgr->nm, &ifp->addr, ns__client_request, ifp, - ns__client_tcpconn, ifp, ifp->mgr->backlog, + ifp->mgr->nm, ISC_NM_LISTEN_ALL, &ifp->addr, ns__client_request, + ifp, ns__client_tcpconn, ifp, ifp->mgr->backlog, &ifp->mgr->sctx->tcpquota, sslctx, &ifp->tcplistensocket); if (result != ISC_R_SUCCESS) { @@ -590,9 +591,10 @@ ns_interface_listenhttp(ns_interface_t *ifp, isc_tlsctx_t *sslctx, char **eps, } if (result == ISC_R_SUCCESS) { - result = isc_nm_listenhttp( - ifp->mgr->nm, &ifp->addr, ifp->mgr->backlog, quota, - sslctx, epset, max_concurrent_streams, &sock); + result = isc_nm_listenhttp(ifp->mgr->nm, ISC_NM_LISTEN_ALL, + &ifp->addr, ifp->mgr->backlog, quota, + sslctx, epset, + max_concurrent_streams, &sock); } isc_nm_http_endpoints_detach(&epset); From 317d9547a961ec85f1947b3dbd6d04760d41aebd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Fri, 25 Mar 2022 16:46:31 +0100 Subject: [PATCH 2/2] Add CHANGES note for [GL !6032] --- CHANGES | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES b/CHANGES index f4b80b703c..cd40e020da 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,6 @@ +5865. [func] Make statistics channel and control channel listen + on a single network manager thread. [GL !6032] + 5864. [func] The OID embedded at the start of a PRIVATEOID public key in a KEY, DNSKEY, CDNSKEY, or RKEY RR is now checked for validity when reading from wire or from