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().
This commit is contained in:
Ondřej Surý 2022-03-23 13:57:15 +01:00
parent 4c3a985a24
commit 9de10cd153
23 changed files with 203 additions and 281 deletions

View file

@ -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);
}
/*%

View file

@ -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) {

View file

@ -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

View file

@ -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:

View file

@ -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,

View file

@ -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:

View file

@ -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);

View file

@ -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();

View file

@ -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);
}

View file

@ -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

View file

@ -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;

View file

@ -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;

View file

@ -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));

View file

@ -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;

View file

@ -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;

View file

@ -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;

View file

@ -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

View file

@ -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);

View file

@ -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,

View file

@ -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);

View file

@ -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) {

View file

@ -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;
}

View file

@ -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);