From 9de10cd15307d85996dd144c3464a6359b90a20e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Sur=C3=BD?= Date: Wed, 23 Mar 2022 13:57:15 +0100 Subject: [PATCH] Remove extrahandle size from netmgr Previously, it was possible to assign a bit of memory space in the nmhandle to store the client data. This was complicated and prevents further refactoring of isc_nmhandle_t caching (future work). Instead of caching the data in the nmhandle, allocate the hot-path ns_client_t objects from per-thread clientmgr memory context and just assign it to the isc_nmhandle_t via isc_nmhandle_set(). --- bin/dig/dighost.c | 8 +- bin/named/controlconf.c | 11 ++- bin/rndc/rndc.c | 2 +- bin/tests/test_client.c | 8 +- bin/tests/test_server.c | 11 +-- lib/dns/dispatch.c | 4 +- lib/dns/tests/dispatch_test.c | 8 +- lib/dns/xfrin.c | 4 +- lib/isc/httpd.c | 9 +- lib/isc/include/isc/netmgr.h | 65 ++++-------- lib/isc/netmgr/http.c | 29 +++--- lib/isc/netmgr/netmgr-int.h | 5 - lib/isc/netmgr/netmgr.c | 16 +-- lib/isc/netmgr/tcp.c | 12 +-- lib/isc/netmgr/tcpdns.c | 10 +- lib/isc/netmgr/tlsdns.c | 10 +- lib/isc/netmgr/tlsstream.c | 15 +-- lib/isc/netmgr/udp.c | 12 +-- lib/isc/tests/doh_test.c | 28 +++--- lib/isc/tests/netmgr_test.c | 181 ++++++++++++++++------------------ lib/ns/client.c | 21 ++-- lib/ns/interfacemgr.c | 12 +-- lib/ns/tests/nstest.c | 3 +- 23 files changed, 203 insertions(+), 281 deletions(-) diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c index 7b68d252ee..ef47570f2d 100644 --- a/bin/dig/dighost.c +++ b/bin/dig/dighost.c @@ -2798,7 +2798,7 @@ start_tcp(dig_query_t *query) { isc_tlsctx_enable_dot_client_alpn(query->tlsctx); isc_nm_tlsdnsconnect(netmgr, &localaddr, &query->sockaddr, tcp_connected, - connectquery, local_timeout, 0, + connectquery, local_timeout, query->tlsctx); #if HAVE_LIBNGHTTP2 } else if (query->lookup->https_mode) { @@ -2819,12 +2819,12 @@ start_tcp(dig_query_t *query) { isc_nm_httpconnect(netmgr, &localaddr, &query->sockaddr, uri, !query->lookup->https_get, tcp_connected, connectquery, - query->tlsctx, local_timeout, 0); + query->tlsctx, local_timeout); #endif } else { isc_nm_tcpdnsconnect(netmgr, &localaddr, &query->sockaddr, tcp_connected, - connectquery, local_timeout, 0); + connectquery, local_timeout); } /* XXX: set DSCP */ @@ -3001,7 +3001,7 @@ start_udp(dig_query_t *query) { query_attach(query, &connectquery); isc_nm_udpconnect(netmgr, &localaddr, &query->sockaddr, udp_ready, connectquery, - (timeout ? timeout : UDP_TIMEOUT) * 1000, 0); + (timeout ? timeout : UDP_TIMEOUT) * 1000); } /*% diff --git a/bin/named/controlconf.c b/bin/named/controlconf.c index 9deaf39ee4..848fb644c0 100644 --- a/bin/named/controlconf.c +++ b/bin/named/controlconf.c @@ -588,6 +588,9 @@ conn_put(void *arg) { isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL, NAMED_LOGMODULE_CONTROL, ISC_LOG_DEBUG(3), "freeing control connection"); + + isc_mem_put(listener->mctx, conn, sizeof(*conn)); + maybe_free_listener(listener); } @@ -597,7 +600,7 @@ newconnection(controllistener_t *listener, isc_nmhandle_t *handle) { conn = isc_nmhandle_getdata(handle); if (conn == NULL) { - conn = isc_nmhandle_getextra(handle); + conn = isc_mem_get(listener->mctx, sizeof(*conn)); isc_log_write(named_g_lctx, NAMED_LOGCATEGORY_GENERAL, NAMED_LOGMODULE_CONTROL, ISC_LOG_DEBUG(3), "allocate new control connection"); @@ -1160,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, - sizeof(controlconnection_t), 5, NULL, &listener->sock)); + CHECK(isc_nm_listentcp(named_g_netmgr, &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/rndc/rndc.c b/bin/rndc/rndc.c index 619dca140b..b9fbd87f0c 100644 --- a/bin/rndc/rndc.c +++ b/bin/rndc/rndc.c @@ -597,7 +597,7 @@ rndc_startconnect(isc_sockaddr_t *addr) { atomic_fetch_add_relaxed(&connects, 1); isc_nm_tcpconnect(netmgr, local, addr, rndc_connected, &rndc_ccmsg, - 60000, 0); + 60000); } static void diff --git a/bin/tests/test_client.c b/bin/tests/test_client.c index bd5e543b6d..10517f24c7 100644 --- a/bin/tests/test_client.c +++ b/bin/tests/test_client.c @@ -397,17 +397,17 @@ run(void) { switch (protocol) { case UDP: isc_nm_udpconnect(netmgr, &sockaddr_local, &sockaddr_remote, - connect_cb, NULL, timeout, 0); + connect_cb, NULL, timeout); break; case TCP: isc_nm_tcpdnsconnect(netmgr, &sockaddr_local, &sockaddr_remote, - connect_cb, NULL, timeout, 0); + connect_cb, NULL, timeout); break; case DOT: { isc_tlsctx_createclient(&tls_ctx); isc_nm_tlsdnsconnect(netmgr, &sockaddr_local, &sockaddr_remote, - connect_cb, NULL, timeout, 0, tls_ctx); + connect_cb, NULL, timeout, tls_ctx); break; } #if HAVE_LIBNGHTTP2 @@ -428,7 +428,7 @@ run(void) { } isc_nm_httpconnect(netmgr, &sockaddr_local, &sockaddr_remote, req_url, is_post, connect_cb, NULL, tls_ctx, - timeout, 0); + timeout); } break; #endif default: diff --git a/bin/tests/test_server.c b/bin/tests/test_server.c index a5b8833963..066dcf9e7f 100644 --- a/bin/tests/test_server.c +++ b/bin/tests/test_server.c @@ -266,20 +266,19 @@ run(void) { switch (protocol) { case UDP: - result = isc_nm_listenudp(netmgr, &sockaddr, read_cb, NULL, 0, + result = isc_nm_listenudp(netmgr, &sockaddr, read_cb, NULL, &sock); break; case TCP: result = isc_nm_listentcpdns(netmgr, &sockaddr, read_cb, NULL, - accept_cb, NULL, 0, 0, NULL, - &sock); + 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, 0, NULL, - tls_ctx, &sock); + accept_cb, NULL, 0, NULL, tls_ctx, + &sock); break; } #if HAVE_LIBNGHTTP2 @@ -292,7 +291,7 @@ run(void) { } eps = isc_nm_http_endpoints_new(mctx); result = isc_nm_http_endpoints_add( - eps, ISC_NM_HTTP_DEFAULT_PATH, read_cb, NULL, 0); + eps, ISC_NM_HTTP_DEFAULT_PATH, read_cb, NULL); if (result == ISC_R_SUCCESS) { result = isc_nm_listenhttp(netmgr, &sockaddr, 0, NULL, diff --git a/lib/dns/dispatch.c b/lib/dns/dispatch.c index 7544a4dba2..74df922623 100644 --- a/lib/dns/dispatch.c +++ b/lib/dns/dispatch.c @@ -1817,7 +1817,7 @@ dns_dispatch_connect(dns_dispentry_t *resp) { dns_dispatch_attach(disp, &(dns_dispatch_t *){ NULL }); isc_nm_tcpdnsconnect(disp->mgr->nm, &disp->local, &disp->peer, tcp_connected, disp, - resp->timeout, 0); + resp->timeout); break; case DNS_DISPATCHSTATE_CONNECTING: @@ -1843,7 +1843,7 @@ dns_dispatch_connect(dns_dispentry_t *resp) { case isc_socktype_udp: isc_nm_udpconnect(disp->mgr->nm, &resp->local, &resp->peer, - udp_connected, resp, resp->timeout, 0); + udp_connected, resp, resp->timeout); break; default: diff --git a/lib/dns/tests/dispatch_test.c b/lib/dns/tests/dispatch_test.c index 89a4c2e083..ea4afca338 100644 --- a/lib/dns/tests/dispatch_test.c +++ b/lib/dns/tests/dispatch_test.c @@ -511,7 +511,7 @@ dispatch_timeout_tcp_response(void **state __attribute__((unused))) { assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listentcpdns(netmgr, &tcp_server_addr, noop_nameserver, - NULL, accept_cb, NULL, 0, 0, NULL, &sock); + NULL, accept_cb, NULL, 0, NULL, &sock); assert_int_equal(result, ISC_R_SUCCESS); region.base = rbuf; @@ -567,7 +567,7 @@ dispatch_tcp_response(void **state __attribute__((unused))) { assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listentcpdns(netmgr, &tcp_server_addr, nameserver, NULL, - accept_cb, NULL, 0, 0, NULL, &sock); + accept_cb, NULL, 0, NULL, &sock); assert_int_equal(result, ISC_R_SUCCESS); region.base = rbuf; @@ -626,7 +626,7 @@ dispatch_timeout_udp_response(void **state __attribute__((unused))) { assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listenudp(netmgr, &udp_server_addr, noop_nameserver, - NULL, 0, &sock); + NULL, &sock); assert_int_equal(result, ISC_R_SUCCESS); region.base = rbuf; @@ -682,7 +682,7 @@ dispatch_getnext(void **state) { /* * Create a local udp nameserver on the loopback. */ - result = isc_nm_listenudp(netmgr, &udp_server_addr, nameserver, NULL, 0, + result = isc_nm_listenudp(netmgr, &udp_server_addr, nameserver, NULL, &sock); assert_int_equal(result, ISC_R_SUCCESS); diff --git a/lib/dns/xfrin.c b/lib/dns/xfrin.c index 5df10d3ded..c64b5525c5 100644 --- a/lib/dns/xfrin.c +++ b/lib/dns/xfrin.c @@ -949,7 +949,7 @@ xfrin_start(dns_xfrin_ctx_t *xfr) { case DNS_TRANSPORT_TCP: isc_nm_tcpdnsconnect(xfr->netmgr, &xfr->sourceaddr, &xfr->primaryaddr, xfrin_connect_done, - connect_xfr, 30000, 0); + connect_xfr, 30000); break; case DNS_TRANSPORT_TLS: { uint32_t tls_versions; @@ -1025,7 +1025,7 @@ xfrin_start(dns_xfrin_ctx_t *xfr) { } isc_nm_tlsdnsconnect(xfr->netmgr, &xfr->sourceaddr, &xfr->primaryaddr, xfrin_connect_done, - connect_xfr, 30000, 0, tlsctx); + connect_xfr, 30000, tlsctx); } break; default: UNREACHABLE(); diff --git a/lib/isc/httpd.c b/lib/isc/httpd.c index 7a1512b6f7..e0a35d6e81 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, - sizeof(isc_httpd_t), 5, NULL, &httpdmgr->sock)); + CHECK(isc_nm_listentcp(nm, addr, httpd_newconn, httpdmgr, 5, NULL, + &httpdmgr->sock)); httpdmgr->magic = HTTPDMGR_MAGIC; *httpdmgrp = httpdmgr; @@ -649,6 +649,9 @@ httpd_put(void *arg) { free_buffer(mgr->mctx, &httpd->headerbuffer); free_buffer(mgr->mctx, &httpd->compbuffer); + + isc_mem_put(mgr->mctx, httpd, sizeof(*httpd)); + httpdmgr_detach(&mgr); #if ENABLE_AFL @@ -667,7 +670,7 @@ new_httpd(isc_httpdmgr_t *httpdmgr, isc_nmhandle_t *handle) { httpd = isc_nmhandle_getdata(handle); if (httpd == NULL) { - httpd = isc_nmhandle_getextra(handle); + httpd = isc_mem_get(httpdmgr->mctx, sizeof(*httpd)); *httpd = (isc_httpd_t){ .handle = NULL }; httpdmgr_attach(httpdmgr, &httpd->mgr); } diff --git a/lib/isc/include/isc/netmgr.h b/lib/isc/include/isc/netmgr.h index 86ac0e9ac7..9489c15578 100644 --- a/lib/isc/include/isc/netmgr.h +++ b/lib/isc/include/isc/netmgr.h @@ -133,9 +133,6 @@ isc__nmhandle_detach(isc_nmhandle_t **handlep FLARG); void * isc_nmhandle_getdata(isc_nmhandle_t *handle); -void * -isc_nmhandle_getextra(isc_nmhandle_t *handle); - bool isc_nmhandle_is_stream(isc_nmhandle_t *handle); @@ -200,7 +197,7 @@ 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, size_t extrasize, isc_nmsocket_t **sockp); + void *cbarg, isc_nmsocket_t **sockp); /*%< * Start listening for UDP packets on interface 'iface' using net manager * 'mgr'. @@ -209,25 +206,16 @@ isc_nm_listenudp(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nm_recv_cb_t cb, * * When a packet is received on the socket, 'cb' will be called with 'cbarg' * as its argument. - * - * When handles are allocated for the socket, 'extrasize' additional bytes - * can be allocated along with the handle for an associated object, which - * can then be freed automatically when the handle is destroyed. */ void isc_nm_udpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, - isc_nm_cb_t cb, void *cbarg, unsigned int timeout, - size_t extrahandlesize); + isc_nm_cb_t cb, void *cbarg, unsigned int timeout); /*%< * Open a UDP socket, bind to 'local' and connect to 'peer', and * immediately call 'cb' with a handle so that the caller can begin * sending packets over UDP. * - * When handles are allocated for the socket, 'extrasize' additional bytes - * can be allocated along with the handle for an associated object, which - * can then be freed automatically when the handle is destroyed. - * * 'timeout' specifies the timeout interval in milliseconds. * * The connected socket can only be accessed via the handle passed to @@ -235,8 +223,7 @@ isc_nm_udpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, */ isc_result_t -isc_nm_routeconnect(isc_nm_t *mgr, isc_nm_cb_t cb, void *cbarg, - size_t extrahandlesize); +isc_nm_routeconnect(isc_nm_t *mgr, isc_nm_cb_t cb, void *cbarg); /*%< * Open a route/netlink socket and call 'cb', so the caller can be * begin listening for interface changes. This behaves similarly to @@ -317,9 +304,8 @@ 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_accept_cb_t accept_cb, void *accept_cbarg, - size_t extrahandlesize, int backlog, isc_quota_t *quota, - isc_nmsocket_t **sockp); + isc_nm_accept_cb_t accept_cb, void *accept_cbarg, int backlog, + isc_quota_t *quota, isc_nmsocket_t **sockp); /*%< * Start listening for raw messages over the TCP interface 'iface', using * net manager 'mgr'. @@ -330,9 +316,6 @@ isc_nm_listentcp(isc_nm_t *mgr, isc_sockaddr_t *iface, * When connection is accepted on the socket, 'accept_cb' will be called with * 'accept_cbarg' as its argument. The callback is expected to start a read. * - * When handles are allocated for the socket, 'extrasize' additional bytes - * will be allocated along with the handle for an associated object. - * * If 'quota' is not NULL, then the socket is attached to the specified * quota. This allows us to enforce TCP client quota limits. * @@ -340,15 +323,13 @@ isc_nm_listentcp(isc_nm_t *mgr, isc_sockaddr_t *iface, void isc_nm_tcpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, - isc_nm_cb_t cb, void *cbarg, unsigned int timeout, - size_t extrahandlesize); + isc_nm_cb_t cb, void *cbarg, unsigned int timeout); /*%< * Create a socket using netmgr 'mgr', bind it to the address 'local', * and connect it to the address 'peer'. * * When the connection is complete or has timed out, call 'cb' with - * argument 'cbarg'. Allocate 'extrahandlesize' additional bytes along - * with the handle to use for an associated object. + * argument 'cbarg'. * * 'timeout' specifies the timeout interval in milliseconds. * @@ -360,8 +341,7 @@ isc_result_t isc_nm_listentcpdns(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nm_recv_cb_t recv_cb, void *recv_cbarg, isc_nm_accept_cb_t accept_cb, void *accept_cbarg, - size_t extrahandlesize, int backlog, isc_quota_t *quota, - isc_nmsocket_t **sockp); + int backlog, isc_quota_t *quota, isc_nmsocket_t **sockp); /*%< * Start listening for DNS messages over the TCP interface 'iface', using * net manager 'mgr'. @@ -378,10 +358,6 @@ isc_nm_listentcpdns(isc_nm_t *mgr, isc_sockaddr_t *iface, * When a new TCPDNS connection is accepted, 'accept_cb' will be called * with 'accept_cbarg' as its argument. * - * When handles are allocated for the socket, 'extrasize' additional bytes - * will be allocated along with the handle for an associated object - * (typically ns_client). - * * 'quota' is passed to isc_nm_listentcp() when opening the raw TCP socket. */ @@ -389,8 +365,8 @@ isc_result_t isc_nm_listentlsdns(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nm_recv_cb_t recv_cb, void *recv_cbarg, isc_nm_accept_cb_t accept_cb, void *accept_cbarg, - size_t extrahandlesize, int backlog, isc_quota_t *quota, - isc_tlsctx_t *sslctx, isc_nmsocket_t **sockp); + int backlog, isc_quota_t *quota, isc_tlsctx_t *sslctx, + isc_nmsocket_t **sockp); /*%< * Same as isc_nm_listentcpdns but for an SSL (DoT) socket. */ @@ -464,19 +440,17 @@ isc_nm_checkaddr(const isc_sockaddr_t *addr, isc_socktype_t type); void isc_nm_tcpdnsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, - isc_nm_cb_t cb, void *cbarg, unsigned int timeout, - size_t extrahandlesize); + isc_nm_cb_t cb, void *cbarg, unsigned int timeout); void isc_nm_tlsdnsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, isc_nm_cb_t cb, void *cbarg, unsigned int timeout, - size_t extrahandlesize, isc_tlsctx_t *sslctx); + isc_tlsctx_t *sslctx); /*%< * Establish a DNS client connection via a TCP or TLS connection, bound to * the address 'local' and connected to the address 'peer'. * * When the connection is complete or has timed out, call 'cb' with - * argument 'cbarg'. Allocate 'extrahandlesize' additional bytes along - * with the handle to use for an associated object. + * argument 'cbarg'. * * 'timeout' specifies the timeout interval in milliseconds. * @@ -502,20 +476,19 @@ isc_nm_is_http_handle(isc_nmhandle_t *handle); isc_result_t isc_nm_listentls(isc_nm_t *mgr, isc_sockaddr_t *iface, - isc_nm_accept_cb_t accept_cb, void *accept_cbarg, - size_t extrahandlesize, int backlog, isc_quota_t *quota, - isc_tlsctx_t *sslctx, isc_nmsocket_t **sockp); + isc_nm_accept_cb_t accept_cb, void *accept_cbarg, int backlog, + isc_quota_t *quota, isc_tlsctx_t *sslctx, + isc_nmsocket_t **sockp); void isc_nm_tlsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, isc_nm_cb_t cb, void *cbarg, isc_tlsctx_t *ctx, - unsigned int timeout, size_t extrahandlesize); + unsigned int timeout); void isc_nm_httpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, const char *uri, bool POST, isc_nm_cb_t cb, void *cbarg, - isc_tlsctx_t *ctx, unsigned int timeout, - size_t extrahandlesize); + isc_tlsctx_t *ctx, unsigned int timeout); isc_result_t isc_nm_listenhttp(isc_nm_t *mgr, isc_sockaddr_t *iface, int backlog, @@ -535,7 +508,7 @@ isc_nm_http_endpoints_new(isc_mem_t *mctx); isc_result_t isc_nm_http_endpoints_add(isc_nm_http_endpoints_t *restrict eps, const char *uri, const isc_nm_recv_cb_t cb, - void *cbarg, const size_t extrahandlesize); + void *cbarg); /*%< Adds a new endpoint to the given HTTP endpoints set object. * * NOTE: adding an endpoint is allowed only if the endpoint object has diff --git a/lib/isc/netmgr/http.c b/lib/isc/netmgr/http.c index d09ad5b8c7..28294a02ae 100644 --- a/lib/isc/netmgr/http.c +++ b/lib/isc/netmgr/http.c @@ -1130,10 +1130,12 @@ http_send_outgoing(isc_nm_http_session_t *session, isc_nmhandle_t *httphandle, * FLUSH_HTTP_WRITE_BUFFER_AFTER bytes in the write buffer, we * will flush the buffer. */ if (cb != NULL) { - isc__nm_uvreq_t *newcb = isc__nm_uvreq_get( - httphandle->sock->mgr, httphandle->sock); + isc__nm_uvreq_t *newcb = NULL; INSIST(VALID_NMHANDLE(httphandle)); + + newcb = isc__nm_uvreq_get(httphandle->sock->mgr, + httphandle->sock); newcb->cb.send = cb; newcb->cbarg = cbarg; isc_nmhandle_attach(httphandle, &newcb->handle); @@ -1422,8 +1424,7 @@ error: void isc_nm_httpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, const char *uri, bool post, isc_nm_cb_t cb, void *cbarg, - isc_tlsctx_t *tlsctx, unsigned int timeout, - size_t extrahandlesize) { + isc_tlsctx_t *tlsctx, unsigned int timeout) { isc_sockaddr_t local_interface; isc_nmsocket_t *sock = NULL; @@ -1441,7 +1442,6 @@ isc_nm_httpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, sock = isc_mem_get(mgr->mctx, sizeof(*sock)); isc__nmsocket_init(sock, mgr, isc_nm_httpsocket, local); - sock->extrahandlesize = extrahandlesize; sock->connect_timeout = timeout; sock->result = ISC_R_UNSET; sock->connect_cb = cb; @@ -1485,10 +1485,10 @@ isc_nm_httpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, if (tlsctx != NULL) { isc_nm_tlsconnect(mgr, local, peer, transport_connect_cb, sock, - tlsctx, timeout, 0); + tlsctx, timeout); } else { isc_nm_tcpconnect(mgr, local, peer, transport_connect_cb, sock, - timeout, 0); + timeout); } } @@ -1687,7 +1687,6 @@ server_handle_path_header(isc_nmsocket_t *socket, const uint8_t *value, if (handler != NULL) { socket->h2.cb = handler->cb; socket->h2.cbarg = handler->cbarg; - socket->extrahandlesize = handler->extrahandlesize; } else { isc_mem_free(socket->mgr->mctx, socket->h2.request_path); socket->h2.request_path = NULL; @@ -2487,11 +2486,9 @@ isc_nm_listenhttp(isc_nm_t *mgr, isc_sockaddr_t *iface, int backlog, if (ctx != NULL) { result = isc_nm_listentls(mgr, iface, httplisten_acceptcb, sock, - sizeof(isc_nm_http_session_t), backlog, quota, ctx, &sock->outer); } else { result = isc_nm_listentcp(mgr, iface, httplisten_acceptcb, sock, - sizeof(isc_nm_http_session_t), backlog, quota, &sock->outer); } @@ -2627,7 +2624,7 @@ http_callback(isc_nmhandle_t *handle, isc_result_t result, isc_region_t *data, isc_result_t isc_nm_http_endpoints_add(isc_nm_http_endpoints_t *restrict eps, const char *uri, const isc_nm_recv_cb_t cb, - void *cbarg, const size_t extrahandlesize) { + void *cbarg) { isc_mem_t *mctx; isc_nm_httphandler_t *restrict handler = NULL; isc_nm_httpcbarg_t *restrict httpcbarg = NULL; @@ -2645,12 +2642,10 @@ isc_nm_http_endpoints_add(isc_nm_http_endpoints_t *restrict eps, if (http_endpoints_find(uri, eps) == NULL) { handler = isc_mem_get(mctx, sizeof(*handler)); - *handler = (isc_nm_httphandler_t){ - .cb = http_callback, - .cbarg = httpcbarg, - .extrahandlesize = extrahandlesize, - .path = isc_mem_strdup(mctx, uri) - }; + *handler = (isc_nm_httphandler_t){ .cb = http_callback, + .cbarg = httpcbarg, + .path = isc_mem_strdup( + mctx, uri) }; ISC_LINK_INIT(handler, link); newhandler = true; diff --git a/lib/isc/netmgr/netmgr-int.h b/lib/isc/netmgr/netmgr-int.h index 75949c869a..ce1d35f7f1 100644 --- a/lib/isc/netmgr/netmgr-int.h +++ b/lib/isc/netmgr/netmgr-int.h @@ -278,7 +278,6 @@ struct isc_nmhandle { LINK(isc_nmhandle_t) active_link; #endif void *opaque; - char extra[]; }; typedef enum isc__netievent_type { @@ -816,7 +815,6 @@ typedef struct isc_nm_httphandler { char *path; isc_nm_recv_cb_t cb; void *cbarg; - size_t extrahandlesize; LINK(struct isc_nm_httphandler) link; } isc_nm_httphandler_t; @@ -987,9 +985,6 @@ struct isc_nmsocket { isc_nmhandle_t *statichandle; isc_nmhandle_t *outerhandle; - /*% Extra data allocated at the end of each isc_nmhandle_t */ - size_t extrahandlesize; - /*% TCP backlog */ int backlog; diff --git a/lib/isc/netmgr/netmgr.c b/lib/isc/netmgr/netmgr.c index 122e5e84a2..5f4e7631ab 100644 --- a/lib/isc/netmgr/netmgr.c +++ b/lib/isc/netmgr/netmgr.c @@ -1547,9 +1547,8 @@ isc__nm_free_uvbuf(isc_nmsocket_t *sock, const uv_buf_t *buf) { static isc_nmhandle_t * alloc_handle(isc_nmsocket_t *sock) { - isc_nmhandle_t *handle = - isc_mem_get(sock->mgr->mctx, - sizeof(isc_nmhandle_t) + sock->extrahandlesize); + isc_nmhandle_t *handle = isc_mem_get(sock->mgr->mctx, + sizeof(isc_nmhandle_t)); *handle = (isc_nmhandle_t){ .magic = NMHANDLE_MAGIC }; #ifdef NETMGR_TRACE @@ -1666,8 +1665,6 @@ isc_nmhandle_is_stream(isc_nmhandle_t *handle) { static void nmhandle_free(isc_nmsocket_t *sock, isc_nmhandle_t *handle) { - size_t extra = sock->extrahandlesize; - isc_refcount_destroy(&handle->references); if (handle->dofree != NULL) { @@ -1676,7 +1673,7 @@ nmhandle_free(isc_nmsocket_t *sock, isc_nmhandle_t *handle) { *handle = (isc_nmhandle_t){ .magic = 0 }; - isc_mem_put(sock->mgr->mctx, handle, sizeof(isc_nmhandle_t) + extra); + isc_mem_put(sock->mgr->mctx, handle, sizeof(isc_nmhandle_t)); } static void @@ -2382,13 +2379,6 @@ isc_nmhandle_timer_running(isc_nmhandle_t *handle) { return (isc__nmsocket_timer_running(handle->sock)); } -void * -isc_nmhandle_getextra(isc_nmhandle_t *handle) { - REQUIRE(VALID_NMHANDLE(handle)); - - return (handle->extra); -} - isc_sockaddr_t isc_nmhandle_peeraddr(isc_nmhandle_t *handle) { REQUIRE(VALID_NMHANDLE(handle)); diff --git a/lib/isc/netmgr/tcp.c b/lib/isc/netmgr/tcp.c index 9fc80c4d20..1f4d3bf088 100644 --- a/lib/isc/netmgr/tcp.c +++ b/lib/isc/netmgr/tcp.c @@ -289,8 +289,7 @@ error: void isc_nm_tcpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, - isc_nm_cb_t cb, void *cbarg, unsigned int timeout, - size_t extrahandlesize) { + isc_nm_cb_t cb, void *cbarg, unsigned int timeout) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *sock = NULL; isc__netievent_tcpconnect_t *ievent = NULL; @@ -306,7 +305,6 @@ isc_nm_tcpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, sock = isc_mem_get(mgr->mctx, sizeof(*sock)); isc__nmsocket_init(sock, mgr, isc_nm_tcpsocket, local); - sock->extrahandlesize = extrahandlesize; sock->connect_timeout = timeout; sock->result = ISC_R_UNSET; sock->fd = (uv_os_sock_t)-1; @@ -395,7 +393,6 @@ start_tcp_child(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nmsocket_t *sock, csock->parent = sock; csock->accept_cb = sock->accept_cb; csock->accept_cbarg = sock->accept_cbarg; - csock->extrahandlesize = sock->extrahandlesize; csock->backlog = sock->backlog; csock->tid = tid; /* @@ -428,9 +425,8 @@ enqueue_stoplistening(isc_nmsocket_t *sock) { isc_result_t isc_nm_listentcp(isc_nm_t *mgr, isc_sockaddr_t *iface, - isc_nm_accept_cb_t accept_cb, void *accept_cbarg, - size_t extrahandlesize, int backlog, isc_quota_t *quota, - isc_nmsocket_t **sockp) { + 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; isc_nmsocket_t *sock = NULL; size_t children_size = 0; @@ -451,7 +447,6 @@ isc_nm_listentcp(isc_nm_t *mgr, isc_sockaddr_t *iface, sock->accept_cb = accept_cb; sock->accept_cbarg = accept_cbarg; - sock->extrahandlesize = extrahandlesize; sock->backlog = backlog; sock->pquota = quota; @@ -950,7 +945,6 @@ accept_connection(isc_nmsocket_t *ssock, isc_quota_t *quota) { csock = isc_mem_get(ssock->mgr->mctx, sizeof(isc_nmsocket_t)); isc__nmsocket_init(csock, ssock->mgr, isc_nm_tcpsocket, &ssock->iface); csock->tid = ssock->tid; - csock->extrahandlesize = ssock->extrahandlesize; isc__nmsocket_attach(ssock, &csock->server); csock->recv_cb = ssock->recv_cb; csock->recv_cbarg = ssock->recv_cbarg; diff --git a/lib/isc/netmgr/tcpdns.c b/lib/isc/netmgr/tcpdns.c index 53c2f30ff2..cab6fc34f6 100644 --- a/lib/isc/netmgr/tcpdns.c +++ b/lib/isc/netmgr/tcpdns.c @@ -252,8 +252,7 @@ error: void isc_nm_tcpdnsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, - isc_nm_cb_t cb, void *cbarg, unsigned int timeout, - size_t extrahandlesize) { + isc_nm_cb_t cb, void *cbarg, unsigned int timeout) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *sock = NULL; isc__netievent_tcpdnsconnect_t *ievent = NULL; @@ -269,7 +268,6 @@ isc_nm_tcpdnsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, sock = isc_mem_get(mgr->mctx, sizeof(*sock)); isc__nmsocket_init(sock, mgr, isc_nm_tcpdnssocket, local); - sock->extrahandlesize = extrahandlesize; sock->connect_timeout = timeout; sock->result = ISC_R_UNSET; atomic_init(&sock->client, true); @@ -368,7 +366,6 @@ start_tcpdns_child(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nmsocket_t *sock, csock->accept_cbarg = sock->accept_cbarg; csock->recv_cb = sock->recv_cb; csock->recv_cbarg = sock->recv_cbarg; - csock->extrahandlesize = sock->extrahandlesize; csock->backlog = sock->backlog; csock->tid = tid; /* @@ -394,8 +391,7 @@ isc_result_t isc_nm_listentcpdns(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nm_recv_cb_t recv_cb, void *recv_cbarg, isc_nm_accept_cb_t accept_cb, void *accept_cbarg, - size_t extrahandlesize, int backlog, isc_quota_t *quota, - isc_nmsocket_t **sockp) { + int backlog, isc_quota_t *quota, isc_nmsocket_t **sockp) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *sock = NULL; size_t children_size = 0; @@ -417,7 +413,6 @@ isc_nm_listentcpdns(isc_nm_t *mgr, isc_sockaddr_t *iface, sock->accept_cbarg = accept_cbarg; sock->recv_cb = recv_cb; sock->recv_cbarg = recv_cbarg; - sock->extrahandlesize = extrahandlesize; sock->backlog = backlog; sock->pquota = quota; @@ -952,7 +947,6 @@ accept_connection(isc_nmsocket_t *ssock, isc_quota_t *quota) { isc__nmsocket_init(csock, ssock->mgr, isc_nm_tcpdnssocket, &ssock->iface); csock->tid = ssock->tid; - csock->extrahandlesize = ssock->extrahandlesize; isc__nmsocket_attach(ssock, &csock->server); csock->recv_cb = ssock->recv_cb; csock->recv_cbarg = ssock->recv_cbarg; diff --git a/lib/isc/netmgr/tlsdns.c b/lib/isc/netmgr/tlsdns.c index 4864fcc477..b13df1f45d 100644 --- a/lib/isc/netmgr/tlsdns.c +++ b/lib/isc/netmgr/tlsdns.c @@ -306,7 +306,7 @@ error: void isc_nm_tlsdnsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, isc_nm_cb_t cb, void *cbarg, unsigned int timeout, - size_t extrahandlesize, isc_tlsctx_t *sslctx) { + isc_tlsctx_t *sslctx) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *sock = NULL; isc__netievent_tlsdnsconnect_t *ievent = NULL; @@ -323,7 +323,6 @@ isc_nm_tlsdnsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, sock = isc_mem_get(mgr->mctx, sizeof(*sock)); isc__nmsocket_init(sock, mgr, isc_nm_tlsdnssocket, local); - sock->extrahandlesize = extrahandlesize; sock->connect_timeout = timeout; sock->result = ISC_R_UNSET; sock->tls.ctx = sslctx; @@ -426,7 +425,6 @@ start_tlsdns_child(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nmsocket_t *sock, csock->accept_cbarg = sock->accept_cbarg; csock->recv_cb = sock->recv_cb; csock->recv_cbarg = sock->recv_cbarg; - csock->extrahandlesize = sock->extrahandlesize; csock->backlog = sock->backlog; csock->tid = tid; csock->tls.ctx = sock->tls.ctx; @@ -463,8 +461,8 @@ isc_result_t isc_nm_listentlsdns(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nm_recv_cb_t recv_cb, void *recv_cbarg, isc_nm_accept_cb_t accept_cb, void *accept_cbarg, - size_t extrahandlesize, int backlog, isc_quota_t *quota, - isc_tlsctx_t *sslctx, isc_nmsocket_t **sockp) { + int backlog, isc_quota_t *quota, isc_tlsctx_t *sslctx, + isc_nmsocket_t **sockp) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *sock = NULL; size_t children_size = 0; @@ -486,7 +484,6 @@ isc_nm_listentlsdns(isc_nm_t *mgr, isc_sockaddr_t *iface, sock->accept_cbarg = accept_cbarg; sock->recv_cb = recv_cb; sock->recv_cbarg = recv_cbarg; - sock->extrahandlesize = extrahandlesize; sock->backlog = backlog; sock->pquota = quota; @@ -1469,7 +1466,6 @@ accept_connection(isc_nmsocket_t *ssock, isc_quota_t *quota) { isc__nmsocket_init(csock, ssock->mgr, isc_nm_tlsdnssocket, &ssock->iface); csock->tid = ssock->tid; - csock->extrahandlesize = ssock->extrahandlesize; isc__nmsocket_attach(ssock, &csock->server); csock->accept_cb = ssock->accept_cb; csock->accept_cbarg = ssock->accept_cbarg; diff --git a/lib/isc/netmgr/tlsstream.c b/lib/isc/netmgr/tlsstream.c index 252b52da9f..feeaf242ce 100644 --- a/lib/isc/netmgr/tlsstream.c +++ b/lib/isc/netmgr/tlsstream.c @@ -605,7 +605,6 @@ tlslisten_acceptcb(isc_nmhandle_t *handle, isc_result_t result, void *cbarg) { return (ISC_R_TLSERROR); } - tlssock->extrahandlesize = tlslistensock->extrahandlesize; isc__nmsocket_attach(tlslistensock, &tlssock->listener); isc_nmhandle_attach(handle, &tlssock->outerhandle); tlssock->peer = handle->sock->peer; @@ -624,9 +623,8 @@ 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_accept_cb_t accept_cb, void *accept_cbarg, - size_t extrahandlesize, int backlog, isc_quota_t *quota, - SSL_CTX *sslctx, isc_nmsocket_t **sockp) { + 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; isc_nmsocket_t *tlssock = NULL; isc_nmsocket_t *tsock = NULL; @@ -639,7 +637,6 @@ isc_nm_listentls(isc_nm_t *mgr, isc_sockaddr_t *iface, tlssock->result = ISC_R_UNSET; tlssock->accept_cb = accept_cb; tlssock->accept_cbarg = accept_cbarg; - tlssock->extrahandlesize = extrahandlesize; tlssock->tlsstream.ctx = sslctx; tlssock->tlsstream.tls = NULL; @@ -648,8 +645,7 @@ isc_nm_listentls(isc_nm_t *mgr, isc_sockaddr_t *iface, * We set tlssock->outer to a socket listening for a TCP connection. */ result = isc_nm_listentcp(mgr, iface, tlslisten_acceptcb, tlssock, - extrahandlesize, backlog, quota, - &tlssock->outer); + backlog, quota, &tlssock->outer); if (result != ISC_R_SUCCESS) { atomic_store(&tlssock->closed, true); isc__nmsocket_detach(&tlssock); @@ -880,7 +876,7 @@ tcp_connected(isc_nmhandle_t *handle, isc_result_t result, void *cbarg); void isc_nm_tlsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, isc_nm_cb_t cb, void *cbarg, SSL_CTX *ctx, - unsigned int timeout, size_t extrahandlesize) { + unsigned int timeout) { isc_nmsocket_t *nsock = NULL; #if defined(NETMGR_TRACE) && defined(NETMGR_TRACE_VERBOSE) fprintf(stderr, "TLS: isc_nm_tlsconnect(): in net thread: %s\n", @@ -891,7 +887,6 @@ isc_nm_tlsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, nsock = isc_mem_get(mgr->mctx, sizeof(*nsock)); isc__nmsocket_init(nsock, mgr, isc_nm_tlssocket, local); - nsock->extrahandlesize = extrahandlesize; nsock->result = ISC_R_UNSET; nsock->connect_cb = cb; nsock->connect_cbarg = cbarg; @@ -899,7 +894,7 @@ isc_nm_tlsconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, nsock->tlsstream.ctx = ctx; isc_nm_tcpconnect(mgr, local, peer, tcp_connected, nsock, - nsock->connect_timeout, 0); + nsock->connect_timeout); } static void diff --git a/lib/isc/netmgr/udp.c b/lib/isc/netmgr/udp.c index 3a43cd3b84..7b556aa3e3 100644 --- a/lib/isc/netmgr/udp.c +++ b/lib/isc/netmgr/udp.c @@ -121,7 +121,6 @@ start_udp_child(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nmsocket_t *sock, atomic_init(&csock->reading, true); csock->recv_cb = sock->recv_cb; csock->recv_cbarg = sock->recv_cbarg; - csock->extrahandlesize = sock->extrahandlesize; csock->tid = tid; #if HAVE_SO_REUSEPORT_LB @@ -147,7 +146,7 @@ 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, size_t extrahandlesize, isc_nmsocket_t **sockp) { + void *cbarg, isc_nmsocket_t **sockp) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *sock = NULL; size_t children_size = 0; @@ -169,7 +168,6 @@ isc_nm_listenudp(isc_nm_t *mgr, isc_sockaddr_t *iface, isc_nm_recv_cb_t cb, sock->recv_cb = cb; sock->recv_cbarg = cbarg; - sock->extrahandlesize = extrahandlesize; sock->result = ISC_R_UNSET; sock->tid = 0; @@ -340,8 +338,7 @@ isc__nm_async_routeconnect(isc__networker_t *worker, isc__netievent_t *ev0) { #endif /* USE_ROUTE_SOCKET */ isc_result_t -isc_nm_routeconnect(isc_nm_t *mgr, isc_nm_cb_t cb, void *cbarg, - size_t extrahandlesize) { +isc_nm_routeconnect(isc_nm_t *mgr, isc_nm_cb_t cb, void *cbarg) { #ifdef USE_ROUTE_SOCKET isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *sock = NULL; @@ -355,7 +352,6 @@ isc_nm_routeconnect(isc_nm_t *mgr, isc_nm_cb_t cb, void *cbarg, sock->connect_cb = cb; sock->connect_cbarg = cbarg; - sock->extrahandlesize = extrahandlesize; sock->result = ISC_R_UNSET; atomic_init(&sock->client, true); sock->route_sock = true; @@ -961,8 +957,7 @@ isc__nm_async_udpconnect(isc__networker_t *worker, isc__netievent_t *ev0) { void isc_nm_udpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, - isc_nm_cb_t cb, void *cbarg, unsigned int timeout, - size_t extrahandlesize) { + isc_nm_cb_t cb, void *cbarg, unsigned int timeout) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *sock = NULL; isc__netievent_udpconnect_t *event = NULL; @@ -981,7 +976,6 @@ isc_nm_udpconnect(isc_nm_t *mgr, isc_sockaddr_t *local, isc_sockaddr_t *peer, sock->connect_cb = cb; sock->connect_cbarg = cbarg; sock->read_timeout = timeout; - sock->extrahandlesize = extrahandlesize; sock->peer = *peer; sock->result = ISC_R_UNSET; atomic_init(&sock->client, true); diff --git a/lib/isc/tests/doh_test.c b/lib/isc/tests/doh_test.c index 0a8a045f65..65c5ec6106 100644 --- a/lib/isc/tests/doh_test.c +++ b/lib/isc/tests/doh_test.c @@ -170,7 +170,7 @@ connect_send_request(isc_nm_t *mgr, const char *uri, bool post, } isc_nm_httpconnect(mgr, NULL, &tcp_listen_addr, uri, post, - connect_send_cb, data, ctx, timeout, 0); + connect_send_cb, data, ctx, timeout); } static int @@ -472,7 +472,7 @@ mock_doh_uv_tcp_bind(void **state) { WILL_RETURN(uv_tcp_bind, UV_EADDRINUSE); result = isc_nm_http_endpoints_add(endpoints, ISC_NM_HTTP_DEFAULT_PATH, - noop_read_cb, NULL, 0); + 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); @@ -492,7 +492,7 @@ doh_noop(void **state) { char req_url[256]; result = isc_nm_http_endpoints_add(endpoints, ISC_NM_HTTP_DEFAULT_PATH, - noop_read_cb, NULL, 0); + noop_read_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, NULL, NULL, @@ -540,7 +540,7 @@ doh_noresponse(void **state) { char req_url[256]; result = isc_nm_http_endpoints_add(endpoints, ISC_NM_HTTP_DEFAULT_PATH, - noop_read_cb, NULL, 0); + noop_read_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, NULL, NULL, @@ -641,7 +641,7 @@ doh_timeout_recovery(void **state) { char req_url[256]; result = isc_nm_http_endpoints_add(endpoints, ISC_NM_HTTP_DEFAULT_PATH, - doh_receive_request_cb, NULL, 0); + doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, NULL, NULL, @@ -663,7 +663,7 @@ doh_timeout_recovery(void **state) { ISC_NM_HTTP_DEFAULT_PATH); isc_nm_httpconnect(connect_nm, NULL, &tcp_listen_addr, req_url, atomic_load(&POST), timeout_request_cb, NULL, ctx, - T_SOFT, 0); + T_SOFT); /* * Sleep until sends reaches 5. @@ -773,7 +773,7 @@ doh_recv_one(void **state) { atomic_store(&nsends, atomic_load(&total_sends)); result = isc_nm_http_endpoints_add(endpoints, ISC_NM_HTTP_DEFAULT_PATH, - doh_receive_request_cb, NULL, 0); + doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, @@ -924,7 +924,7 @@ doh_recv_two(void **state) { atomic_store(&nsends, atomic_load(&total_sends)); result = isc_nm_http_endpoints_add(endpoints, ISC_NM_HTTP_DEFAULT_PATH, - doh_receive_request_cb, NULL, 0); + doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, @@ -941,7 +941,7 @@ doh_recv_two(void **state) { isc_nm_httpconnect(connect_nm, NULL, &tcp_listen_addr, req_url, atomic_load(&POST), doh_connect_send_two_requests_cb, - NULL, ctx, 5000, 0); + NULL, ctx, 5000); while (atomic_load(&nsends) > 0) { if (atomic_load(&was_error)) { @@ -1044,7 +1044,7 @@ doh_recv_send(void **state) { isc_quota_t *quotap = init_listener_quota(workers); result = isc_nm_http_endpoints_add(endpoints, ISC_NM_HTTP_DEFAULT_PATH, - doh_receive_request_cb, NULL, 0); + doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, @@ -1157,7 +1157,7 @@ doh_recv_half_send(void **state) { atomic_store(&nsends, atomic_load(&total_sends)); result = isc_nm_http_endpoints_add(endpoints, ISC_NM_HTTP_DEFAULT_PATH, - doh_receive_request_cb, NULL, 0); + doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, @@ -1267,7 +1267,7 @@ doh_half_recv_send(void **state) { atomic_store(&nsends, atomic_load(&total_sends)); result = isc_nm_http_endpoints_add(endpoints, ISC_NM_HTTP_DEFAULT_PATH, - doh_receive_request_cb, NULL, 0); + doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, @@ -1377,7 +1377,7 @@ doh_half_recv_half_send(void **state) { atomic_store(&nsends, atomic_load(&total_sends)); result = isc_nm_http_endpoints_add(endpoints, ISC_NM_HTTP_DEFAULT_PATH, - doh_receive_request_cb, NULL, 0); + doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, @@ -1486,7 +1486,7 @@ doh_bad_connect_uri(void **state) { atomic_store(&nsends, atomic_load(&total_sends)); result = isc_nm_http_endpoints_add(endpoints, ISC_NM_HTTP_DEFAULT_PATH, - doh_receive_request_cb, NULL, 0); + doh_receive_request_cb, NULL); assert_int_equal(result, ISC_R_SUCCESS); result = isc_nm_listenhttp(listen_nm, &tcp_listen_addr, 0, quotap, diff --git a/lib/isc/tests/netmgr_test.c b/lib/isc/tests/netmgr_test.c index 1acaca5e90..dbf3b695c3 100644 --- a/lib/isc/tests/netmgr_test.c +++ b/lib/isc/tests/netmgr_test.c @@ -623,7 +623,7 @@ connect_thread(isc_threadarg_t arg) { static void udp_connect(isc_nm_t *nm) { isc_nm_udpconnect(nm, &udp_connect_addr, &udp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); } static void @@ -634,7 +634,7 @@ 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, 0, &listen_sock); + NULL, &listen_sock); assert_int_not_equal(result, ISC_R_SUCCESS); assert_null(listen_sock); @@ -649,7 +649,7 @@ 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, 0, &listen_sock); + NULL, &listen_sock); assert_int_not_equal(result, ISC_R_SUCCESS); assert_null(listen_sock); @@ -664,7 +664,7 @@ 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, 0, &listen_sock); + NULL, &listen_sock); assert_int_not_equal(result, ISC_R_SUCCESS); assert_null(listen_sock); @@ -678,7 +678,7 @@ mock_udpconnect_uv_udp_open(void **state __attribute__((unused))) { connect_readcb = NULL; isc_refcount_increment0(&active_cconnects); isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); isc__netmgr_shutdown(connect_nm); RESET_RETURN; @@ -691,7 +691,7 @@ mock_udpconnect_uv_udp_bind(void **state __attribute__((unused))) { connect_readcb = NULL; isc_refcount_increment0(&active_cconnects); isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); isc__netmgr_shutdown(connect_nm); RESET_RETURN; @@ -705,7 +705,7 @@ mock_udpconnect_uv_udp_connect(void **state __attribute__((unused))) { connect_readcb = NULL; isc_refcount_increment0(&active_cconnects); isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); isc__netmgr_shutdown(connect_nm); RESET_RETURN; @@ -719,7 +719,7 @@ mock_udpconnect_uv_recv_buffer_size(void **state __attribute__((unused))) { connect_readcb = NULL; isc_refcount_increment0(&active_cconnects); isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); isc__netmgr_shutdown(connect_nm); RESET_RETURN; @@ -732,7 +732,7 @@ mock_udpconnect_uv_send_buffer_size(void **state __attribute__((unused))) { connect_readcb = NULL; isc_refcount_increment0(&active_cconnects); isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); isc__netmgr_shutdown(connect_nm); RESET_RETURN; @@ -744,7 +744,7 @@ udp_noop(void **state __attribute__((unused))) { isc_nmsocket_t *listen_sock = NULL; result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb, - NULL, 0, &listen_sock); + NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_nm_stoplistening(listen_sock); @@ -754,7 +754,7 @@ udp_noop(void **state __attribute__((unused))) { connect_readcb = NULL; isc_refcount_increment0(&active_cconnects); isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); isc__netmgr_shutdown(connect_nm); atomic_assert_int_eq(cconnects, 0); @@ -770,12 +770,12 @@ udp_noresponse(void **state __attribute__((unused))) { isc_nmsocket_t *listen_sock = NULL; result = isc_nm_listenudp(listen_nm, &udp_listen_addr, noop_recv_cb, - NULL, 0, &listen_sock); + NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); WAIT_FOR_EQ(cconnects, 1); WAIT_FOR_EQ(csends, 1); @@ -831,7 +831,7 @@ 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, 0, &listen_sock); + NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); /* @@ -842,7 +842,7 @@ udp_timeout_recovery(void **state __attribute__((unused))) { connect_readcb = timeout_retry_cb; isc_refcount_increment0(&active_cconnects); isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr, - connect_connect_cb, NULL, T_SOFT, 0); + connect_connect_cb, NULL, T_SOFT); WAIT_FOR_EQ(cconnects, 1); WAIT_FOR_GE(csends, 1); @@ -866,12 +866,12 @@ udp_recv_one(void **state __attribute__((unused))) { atomic_store(&nsends, 1); result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb, - NULL, 0, &listen_sock); + NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); WAIT_FOR_EQ(cconnects, 1); WAIT_FOR_LE(nsends, 0); @@ -906,18 +906,18 @@ udp_recv_two(void **state __attribute__((unused))) { atomic_store(&nsends, 2); result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb, - NULL, 0, &listen_sock); + NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); WAIT_FOR_EQ(cconnects, 1); isc_refcount_increment0(&active_cconnects); isc_nm_udpconnect(connect_nm, &udp_connect_addr, &udp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); WAIT_FOR_EQ(cconnects, 2); WAIT_FOR_LE(nsends, 0); @@ -953,7 +953,7 @@ udp_recv_send(void **state __attribute__((unused))) { SKIP_IN_CI; result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb, - NULL, 0, &listen_sock); + NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -998,7 +998,7 @@ udp_recv_half_send(void **state __attribute__((unused))) { SKIP_IN_CI; result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb, - NULL, 0, &listen_sock); + NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -1044,7 +1044,7 @@ udp_half_recv_send(void **state __attribute__((unused))) { SKIP_IN_CI; result = isc_nm_listenudp(listen_nm, &udp_listen_addr, listen_read_cb, - NULL, 0, &listen_sock); + NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -1093,7 +1093,7 @@ 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, 0, &listen_sock); + NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -1145,7 +1145,7 @@ tcp_listener_init_quota(size_t nthreads) { static void tcp_connect(isc_nm_t *nm) { isc_nm_tcpconnect(nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); } #if HAVE_LIBNGHTTP2 @@ -1164,40 +1164,36 @@ get_stream_connect_function(void) { } static isc_result_t -stream_listen(isc_nm_accept_cb_t accept_cb, void *accept_cbarg, - size_t extrahandlesize, int backlog, isc_quota_t *quota, - isc_nmsocket_t **sockp) { +stream_listen(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; #if HAVE_LIBNGHTTP2 if (stream_use_TLS) { result = isc_nm_listentls(listen_nm, &tcp_listen_addr, - accept_cb, accept_cbarg, - extrahandlesize, backlog, quota, - tcp_listen_tlsctx, sockp); + 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, extrahandlesize, backlog, quota, - sockp); + accept_cbarg, backlog, quota, sockp); return (result); } static void -stream_connect(isc_nm_cb_t cb, void *cbarg, unsigned int timeout, - size_t extrahandlesize) { +stream_connect(isc_nm_cb_t cb, void *cbarg, unsigned int timeout) { #if HAVE_LIBNGHTTP2 if (stream_use_TLS) { isc_nm_tlsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, cb, cbarg, - tcp_connect_tlsctx, timeout, extrahandlesize); + tcp_connect_tlsctx, timeout); return; } #endif isc_nm_tcpconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, cb, - cbarg, timeout, extrahandlesize); + cbarg, timeout); } static void @@ -1205,7 +1201,7 @@ stream_noop(void **state __attribute__((unused))) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *listen_sock = NULL; - result = stream_listen(noop_accept_cb, NULL, 0, 0, NULL, &listen_sock); + result = stream_listen(noop_accept_cb, NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_nm_stoplistening(listen_sock); @@ -1214,7 +1210,7 @@ stream_noop(void **state __attribute__((unused))) { connect_readcb = NULL; isc_refcount_increment0(&active_cconnects); - stream_connect(connect_connect_cb, NULL, T_CONNECT, 0); + stream_connect(connect_connect_cb, NULL, T_CONNECT); isc__netmgr_shutdown(connect_nm); atomic_assert_int_eq(cconnects, 0); @@ -1229,11 +1225,11 @@ stream_noresponse(void **state __attribute__((unused))) { isc_result_t result = ISC_R_SUCCESS; isc_nmsocket_t *listen_sock = NULL; - result = stream_listen(noop_accept_cb, NULL, 0, 0, NULL, &listen_sock); + result = stream_listen(noop_accept_cb, NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); - stream_connect(connect_connect_cb, NULL, T_CONNECT, 0); + stream_connect(connect_connect_cb, NULL, T_CONNECT); WAIT_FOR_EQ(cconnects, 1); WAIT_FOR_EQ(csends, 1); @@ -1268,8 +1264,7 @@ stream_timeout_recovery(void **state __attribute__((unused))) { * reads to time out. */ noanswer = true; - result = stream_listen(stream_accept_cb, NULL, 0, 0, NULL, - &listen_sock); + result = stream_listen(stream_accept_cb, NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); /* @@ -1278,7 +1273,7 @@ stream_timeout_recovery(void **state __attribute__((unused))) { isc_nm_settimeouts(connect_nm, T_SOFT, T_SOFT, T_SOFT, T_SOFT); connect_readcb = timeout_retry_cb; isc_refcount_increment0(&active_cconnects); - stream_connect(connect_connect_cb, NULL, T_SOFT, 0); + stream_connect(connect_connect_cb, NULL, T_SOFT); WAIT_FOR_EQ(cconnects, 1); WAIT_FOR_GE(csends, 1); @@ -1302,12 +1297,11 @@ stream_recv_one(void **state __attribute__((unused))) { atomic_store(&nsends, 1); - result = stream_listen(stream_accept_cb, NULL, 0, 0, quotap, - &listen_sock); + result = stream_listen(stream_accept_cb, NULL, 0, quotap, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); - stream_connect(connect_connect_cb, NULL, T_CONNECT, 0); + stream_connect(connect_connect_cb, NULL, T_CONNECT); WAIT_FOR_EQ(cconnects, 1); WAIT_FOR_LE(nsends, 0); @@ -1342,17 +1336,16 @@ stream_recv_two(void **state __attribute__((unused))) { atomic_store(&nsends, 2); - result = stream_listen(stream_accept_cb, NULL, 0, 0, quotap, - &listen_sock); + result = stream_listen(stream_accept_cb, NULL, 0, quotap, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); - stream_connect(connect_connect_cb, NULL, T_CONNECT, 0); + stream_connect(connect_connect_cb, NULL, T_CONNECT); WAIT_FOR_EQ(cconnects, 1); isc_refcount_increment0(&active_cconnects); - stream_connect(connect_connect_cb, NULL, T_CONNECT, 0); + stream_connect(connect_connect_cb, NULL, T_CONNECT); WAIT_FOR_EQ(cconnects, 2); WAIT_FOR_LE(nsends, 0); @@ -1388,8 +1381,7 @@ stream_recv_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = stream_listen(stream_accept_cb, NULL, 0, 0, quotap, - &listen_sock); + result = stream_listen(stream_accept_cb, NULL, 0, quotap, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -1439,8 +1431,7 @@ stream_recv_half_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = stream_listen(stream_accept_cb, NULL, 0, 0, quotap, - &listen_sock); + result = stream_listen(stream_accept_cb, NULL, 0, quotap, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -1491,8 +1482,7 @@ stream_half_recv_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = stream_listen(stream_accept_cb, NULL, 0, 0, quotap, - &listen_sock); + result = stream_listen(stream_accept_cb, NULL, 0, quotap, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -1546,8 +1536,7 @@ stream_half_recv_half_send(void **state __attribute__((unused))) { SKIP_IN_CI; - result = stream_listen(stream_accept_cb, NULL, 0, 0, quotap, - &listen_sock); + result = stream_listen(stream_accept_cb, NULL, 0, quotap, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -1741,7 +1730,7 @@ tcp_half_recv_half_send_quota_sendback(void **state) { static void tcpdns_connect(isc_nm_t *nm) { isc_nm_tcpdnsconnect(nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); } static void @@ -1750,7 +1739,7 @@ tcpdns_noop(void **state __attribute__((unused))) { isc_nmsocket_t *listen_sock = NULL; result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, noop_recv_cb, - NULL, noop_accept_cb, NULL, 0, 0, NULL, + NULL, noop_accept_cb, NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -1761,7 +1750,7 @@ tcpdns_noop(void **state __attribute__((unused))) { connect_readcb = NULL; isc_refcount_increment0(&active_cconnects); isc_nm_tcpdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); isc__netmgr_shutdown(connect_nm); atomic_assert_int_eq(cconnects, 0); @@ -1778,7 +1767,7 @@ tcpdns_noresponse(void **state __attribute__((unused))) { isc_refcount_increment0(&active_cconnects); result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, noop_recv_cb, - NULL, noop_accept_cb, NULL, 0, 0, NULL, + NULL, noop_accept_cb, NULL, 0, NULL, &listen_sock); if (result != ISC_R_SUCCESS) { isc_refcount_decrement(&active_cconnects); @@ -1787,7 +1776,7 @@ tcpdns_noresponse(void **state __attribute__((unused))) { assert_int_equal(result, ISC_R_SUCCESS); isc_nm_tcpdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); WAIT_FOR_EQ(cconnects, 1); WAIT_FOR_EQ(csends, 1); @@ -1824,7 +1813,7 @@ tcpdns_timeout_recovery(void **state __attribute__((unused))) { noanswer = true; result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, &listen_sock); + NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); /* @@ -1836,7 +1825,7 @@ tcpdns_timeout_recovery(void **state __attribute__((unused))) { isc_nm_settimeouts(connect_nm, T_SOFT, T_SOFT, T_SOFT, T_SOFT); isc_refcount_increment0(&active_cconnects); isc_nm_tcpdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_SOFT, 0); + connect_connect_cb, NULL, T_SOFT); WAIT_FOR_EQ(cconnects, 1); WAIT_FOR_GE(csends, 1); @@ -1861,12 +1850,12 @@ tcpdns_recv_one(void **state __attribute__((unused))) { result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, &listen_sock); + NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); isc_nm_tcpdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); WAIT_FOR_EQ(cconnects, 1); WAIT_FOR_LE(nsends, 0); @@ -1902,18 +1891,18 @@ tcpdns_recv_two(void **state __attribute__((unused))) { result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, &listen_sock); + NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); isc_nm_tcpdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); WAIT_FOR_EQ(cconnects, 1); isc_refcount_increment0(&active_cconnects); isc_nm_tcpdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0); + connect_connect_cb, NULL, T_CONNECT); WAIT_FOR_EQ(cconnects, 2); @@ -1951,7 +1940,7 @@ tcpdns_recv_send(void **state __attribute__((unused))) { result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, &listen_sock); + NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -1997,7 +1986,7 @@ tcpdns_recv_half_send(void **state __attribute__((unused))) { result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, &listen_sock); + NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -2044,7 +2033,7 @@ tcpdns_half_recv_send(void **state __attribute__((unused))) { result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, &listen_sock); + NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -2094,7 +2083,7 @@ tcpdns_half_recv_half_send(void **state __attribute__((unused))) { result = isc_nm_listentcpdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, &listen_sock); + NULL, 0, NULL, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); memset(threads, 0, sizeof(threads)); @@ -2137,7 +2126,7 @@ static void tls_connect(isc_nm_t *nm) { isc_nm_tlsconnect(nm, &tcp_connect_addr, &tcp_listen_addr, connect_connect_cb, NULL, tcp_connect_tlsctx, - T_CONNECT, 0); + T_CONNECT); } static void @@ -2320,7 +2309,7 @@ tls_half_recv_half_send_quota_sendback(void **state) { static void tlsdns_connect(isc_nm_t *nm) { isc_nm_tlsdnsconnect(nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0, + connect_connect_cb, NULL, T_CONNECT, tcp_connect_tlsctx); } @@ -2330,7 +2319,7 @@ tlsdns_noop(void **state __attribute__((unused))) { isc_nmsocket_t *listen_sock = NULL; result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, noop_recv_cb, - NULL, noop_accept_cb, NULL, 0, 0, NULL, + NULL, noop_accept_cb, NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -2341,7 +2330,7 @@ tlsdns_noop(void **state __attribute__((unused))) { connect_readcb = NULL; isc_refcount_increment0(&active_cconnects); isc_nm_tlsdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0, + connect_connect_cb, NULL, T_CONNECT, tcp_connect_tlsctx); isc__netmgr_shutdown(connect_nm); @@ -2363,13 +2352,13 @@ tlsdns_noresponse(void **state __attribute__((unused))) { 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, 0, NULL, + NULL, noop_accept_cb, NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); isc_nm_tlsdnsconnect(connect_nm, &connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0, + connect_connect_cb, NULL, T_CONNECT, tcp_connect_tlsctx); WAIT_FOR_EQ(cconnects, 1); @@ -2411,7 +2400,7 @@ tlsdns_timeout_recovery(void **state __attribute__((unused))) { noanswer = true; result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, tcp_listen_tlsctx, + NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -2424,7 +2413,7 @@ tlsdns_timeout_recovery(void **state __attribute__((unused))) { isc_nm_settimeouts(connect_nm, T_SOFT, T_SOFT, T_SOFT, T_SOFT); isc_refcount_increment0(&active_cconnects); isc_nm_tlsdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_SOFT, 0, + connect_connect_cb, NULL, T_SOFT, tcp_connect_tlsctx); WAIT_FOR_EQ(cconnects, 1); @@ -2450,13 +2439,13 @@ tlsdns_recv_one(void **state __attribute__((unused))) { result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, tcp_listen_tlsctx, + NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); isc_nm_tlsdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0, + connect_connect_cb, NULL, T_CONNECT, tcp_connect_tlsctx); WAIT_FOR_EQ(cconnects, 1); @@ -2493,20 +2482,20 @@ tlsdns_recv_two(void **state __attribute__((unused))) { result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, tcp_listen_tlsctx, + NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); isc_nm_tlsdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0, + connect_connect_cb, NULL, T_CONNECT, tcp_connect_tlsctx); WAIT_FOR_EQ(cconnects, 1); isc_refcount_increment0(&active_cconnects); isc_nm_tlsdnsconnect(connect_nm, &tcp_connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0, + connect_connect_cb, NULL, T_CONNECT, tcp_connect_tlsctx); WAIT_FOR_EQ(cconnects, 2); @@ -2545,7 +2534,7 @@ tlsdns_recv_send(void **state __attribute__((unused))) { result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, tcp_listen_tlsctx, + NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -2592,7 +2581,7 @@ tlsdns_recv_half_send(void **state __attribute__((unused))) { result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, tcp_listen_tlsctx, + NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -2640,7 +2629,7 @@ tlsdns_half_recv_send(void **state __attribute__((unused))) { result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, tcp_listen_tlsctx, + NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -2691,7 +2680,7 @@ tlsdns_half_recv_half_send(void **state __attribute__((unused))) { result = isc_nm_listentlsdns(listen_nm, &tcp_listen_addr, listen_read_cb, NULL, listen_accept_cb, - NULL, 0, 0, NULL, tcp_listen_tlsctx, + NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); @@ -2768,13 +2757,13 @@ tlsdns_connect_noalpn(void **state __attribute__((unused))) { 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, 0, NULL, + NULL, noop_accept_cb, NULL, 0, NULL, tcp_listen_tlsctx, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); isc_nm_tlsdnsconnect(connect_nm, &connect_addr, &tcp_listen_addr, - tlsdns_connect_connect_noalpn, NULL, T_CONNECT, 0, + tlsdns_connect_connect_noalpn, NULL, T_CONNECT, connect_tlsctx_noalpn); WAIT_FOR_EQ(active_cconnects, 0); @@ -2835,13 +2824,13 @@ 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, 0, NULL, + tls_accept_cb_noalpn, NULL, 0, NULL, server_tlsctx_noalpn, &listen_sock); assert_int_equal(result, ISC_R_SUCCESS); isc_refcount_increment0(&active_cconnects); isc_nm_tlsdnsconnect(connect_nm, &connect_addr, &tcp_listen_addr, - connect_connect_cb, NULL, T_CONNECT, 0, + connect_connect_cb, NULL, T_CONNECT, tcp_connect_tlsctx); WAIT_FOR_EQ(saccepts, 1); diff --git a/lib/ns/client.c b/lib/ns/client.c index 2cd191dd21..2f5c1dd2a1 100644 --- a/lib/ns/client.c +++ b/lib/ns/client.c @@ -1656,6 +1656,11 @@ ns__client_reset_cb(void *client0) { void ns__client_put_cb(void *client0) { ns_client_t *client = client0; + ns_clientmgr_t *manager = NULL; + + REQUIRE(NS_CLIENT_VALID(client)); + + manager = client->manager; ns_client_log(client, DNS_LOGCATEGORY_SECURITY, NS_LOGMODULE_CLIENT, ISC_LOG_DEBUG(3), "freeing client"); @@ -1664,30 +1669,29 @@ ns__client_put_cb(void *client0) { * Call this first because it requires a valid client. */ ns_query_free(client); + client_extendederror_reset(client); client->magic = 0; client->shuttingdown = true; - isc_mem_put(client->manager->mctx, client->sendbuf, - NS_CLIENT_SEND_BUFFER_SIZE); + isc_mem_put(manager->mctx, client->sendbuf, NS_CLIENT_SEND_BUFFER_SIZE); if (client->opt != NULL) { INSIST(dns_rdataset_isassociated(client->opt)); dns_rdataset_disassociate(client->opt); dns_message_puttemprdataset(client->message, &client->opt); } - client_extendederror_reset(client); dns_message_detach(&client->message); - if (client->manager != NULL) { - clientmgr_detach(&client->manager); - } - /* * Destroy the fetchlock mutex that was created in * ns_query_init(). */ isc_mutex_destroy(&client->query.fetchlock); + + isc_mem_put(manager->mctx, client, sizeof(*client)); + + clientmgr_detach(&manager); } /* @@ -1728,8 +1732,9 @@ ns__client_request(isc_nmhandle_t *handle, isc_result_t eresult, ns_interfacemgr_getclientmgr(ifp->mgr); INSIST(VALID_MANAGER(clientmgr)); + INSIST(clientmgr->tid == isc_nm_tid()); - client = isc_nmhandle_getextra(handle); + client = isc_mem_get(clientmgr->mctx, sizeof(*client)); result = ns__client_setup(client, clientmgr, true); if (result != ISC_R_SUCCESS) { diff --git a/lib/ns/interfacemgr.c b/lib/ns/interfacemgr.c index 750273315e..da7f6e8b2c 100644 --- a/lib/ns/interfacemgr.c +++ b/lib/ns/interfacemgr.c @@ -363,7 +363,7 @@ ns_interfacemgr_create(isc_mem_t *mctx, ns_server_t *sctx, #endif /* if defined(HAVE_GEOIP2) */ if (scan) { - result = isc_nm_routeconnect(nm, route_connected, mgr, 0); + result = isc_nm_routeconnect(nm, route_connected, mgr); if (result != ISC_R_SUCCESS) { isc_log_write(IFMGR_COMMON_LOGARGS, ISC_LOG_INFO, "unable to open route socket: %s", @@ -514,8 +514,7 @@ ns_interface_listenudp(ns_interface_t *ifp) { /* Reserve space for an ns_client_t with the netmgr handle */ result = isc_nm_listenudp(ifp->mgr->nm, &ifp->addr, ns__client_request, - ifp, sizeof(ns_client_t), - &ifp->udplistensocket); + ifp, &ifp->udplistensocket); return (result); } @@ -525,7 +524,7 @@ ns_interface_listentcp(ns_interface_t *ifp) { result = isc_nm_listentcpdns( ifp->mgr->nm, &ifp->addr, ns__client_request, ifp, - ns__client_tcpconn, ifp, sizeof(ns_client_t), ifp->mgr->backlog, + 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, @@ -565,7 +564,7 @@ ns_interface_listentls(ns_interface_t *ifp, isc_tlsctx_t *sslctx) { result = isc_nm_listentlsdns( ifp->mgr->nm, &ifp->addr, ns__client_request, ifp, - ns__client_tcpconn, ifp, sizeof(ns_client_t), ifp->mgr->backlog, + ns__client_tcpconn, ifp, ifp->mgr->backlog, &ifp->mgr->sctx->tcpquota, sslctx, &ifp->tcplistensocket); if (result != ISC_R_SUCCESS) { @@ -603,8 +602,7 @@ ns_interface_listenhttp(ns_interface_t *ifp, isc_tlsctx_t *sslctx, char **eps, for (size_t i = 0; i < neps; i++) { result = isc_nm_http_endpoints_add(epset, eps[i], - ns__client_request, ifp, - sizeof(ns_client_t)); + ns__client_request, ifp); if (result != ISC_R_SUCCESS) { break; } diff --git a/lib/ns/tests/nstest.c b/lib/ns/tests/nstest.c index f1c1545f96..122db814f3 100644 --- a/lib/ns/tests/nstest.c +++ b/lib/ns/tests/nstest.c @@ -118,7 +118,6 @@ isc__nmhandle_detach(isc_nmhandle_t **handlep FLARG) { client->state = 4; ns__client_reset_cb(client); ns__client_put_cb(client); - isc_mem_put(mctx, client, sizeof(ns_client_t)); atomic_store(&client_addrs[i], (uintptr_t)NULL); } @@ -557,7 +556,7 @@ ns_test_cleanup_zone(void) { isc_result_t ns_test_getclient(ns_interface_t *ifp0, bool tcp, ns_client_t **clientp) { isc_result_t result; - ns_client_t *client = isc_mem_get(mctx, sizeof(ns_client_t)); + ns_client_t *client = isc_mem_get(clientmgr->mctx, sizeof(*client)); int i; UNUSED(ifp0);