mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 13:38:26 +00:00
Merge branch '2313-set-RCVBUF-SNDBUF' into 'main'
Resolve "Set reasonable values to SO_RCVBUF and SO_SNDBUF" Closes #2313 See merge request isc-projects/bind9!4460
This commit is contained in:
commit
d34672796c
3
CHANGES
3
CHANGES
@ -1,3 +1,6 @@
|
|||||||
|
5640. [func] Add new configuration option to set the operating system
|
||||||
|
receive and send buffers. [GL #2313]
|
||||||
|
|
||||||
5639. [bug] Check that the first and last SOA record of an AXFR
|
5639. [bug] Check that the first and last SOA record of an AXFR
|
||||||
are consistent. [GL #2528]
|
are consistent. [GL #2528]
|
||||||
|
|
||||||
|
@ -123,6 +123,8 @@ options {\n\
|
|||||||
tcp-initial-timeout 300;\n\
|
tcp-initial-timeout 300;\n\
|
||||||
tcp-keepalive-timeout 300;\n\
|
tcp-keepalive-timeout 300;\n\
|
||||||
tcp-listen-queue 10;\n\
|
tcp-listen-queue 10;\n\
|
||||||
|
tcp-receive-buffer 0;\n\
|
||||||
|
tcp-send-buffer 0;\n\
|
||||||
# tkey-dhkey <none>\n\
|
# tkey-dhkey <none>\n\
|
||||||
# tkey-domain <none>\n\
|
# tkey-domain <none>\n\
|
||||||
# tkey-gssapi-credential <none>\n\
|
# tkey-gssapi-credential <none>\n\
|
||||||
@ -133,6 +135,8 @@ options {\n\
|
|||||||
# treat-cr-as-space <obsolete>;\n\
|
# treat-cr-as-space <obsolete>;\n\
|
||||||
trust-anchor-telemetry yes;\n\
|
trust-anchor-telemetry yes;\n\
|
||||||
# use-id-pool <obsolete>;\n\
|
# use-id-pool <obsolete>;\n\
|
||||||
|
udp-receive-buffer 0;\n\
|
||||||
|
udp-send-buffer 0;\n\
|
||||||
\n\
|
\n\
|
||||||
/* view */\n\
|
/* view */\n\
|
||||||
allow-new-zones no;\n\
|
allow-new-zones no;\n\
|
||||||
|
@ -432,6 +432,8 @@ OPTIONS
|
|||||||
tcp-initial-timeout integer;
|
tcp-initial-timeout integer;
|
||||||
tcp-keepalive-timeout integer;
|
tcp-keepalive-timeout integer;
|
||||||
tcp-listen-queue integer;
|
tcp-listen-queue integer;
|
||||||
|
tcp-receive-buffer integer;
|
||||||
|
tcp-send-buffer integer;
|
||||||
tkey-dhkey quoted_string integer;
|
tkey-dhkey quoted_string integer;
|
||||||
tkey-domain quoted_string;
|
tkey-domain quoted_string;
|
||||||
tkey-gssapi-credential quoted_string;
|
tkey-gssapi-credential quoted_string;
|
||||||
@ -448,6 +450,8 @@ OPTIONS
|
|||||||
transfers-per-ns integer;
|
transfers-per-ns integer;
|
||||||
trust-anchor-telemetry boolean; // experimental
|
trust-anchor-telemetry boolean; // experimental
|
||||||
try-tcp-refresh boolean;
|
try-tcp-refresh boolean;
|
||||||
|
udp-receive-buffer integer;
|
||||||
|
udp-send-buffer integer;
|
||||||
update-check-ksk boolean;
|
update-check-ksk boolean;
|
||||||
use-alt-transfer-source boolean;
|
use-alt-transfer-source boolean;
|
||||||
use-v4-udp-ports { portrange; ... };
|
use-v4-udp-ports { portrange; ... };
|
||||||
|
@ -8503,6 +8503,10 @@ load_configuration(const char *filename, named_server_t *server,
|
|||||||
uint32_t reserved;
|
uint32_t reserved;
|
||||||
uint32_t udpsize;
|
uint32_t udpsize;
|
||||||
uint32_t transfer_message_size;
|
uint32_t transfer_message_size;
|
||||||
|
uint32_t recv_tcp_buffer_size;
|
||||||
|
uint32_t send_tcp_buffer_size;
|
||||||
|
uint32_t recv_udp_buffer_size;
|
||||||
|
uint32_t send_udp_buffer_size;
|
||||||
named_cache_t *nsc;
|
named_cache_t *nsc;
|
||||||
named_cachelist_t cachelist, tmpcachelist;
|
named_cachelist_t cachelist, tmpcachelist;
|
||||||
ns_altsecret_t *altsecret;
|
ns_altsecret_t *altsecret;
|
||||||
@ -8774,6 +8778,9 @@ load_configuration(const char *filename, named_server_t *server,
|
|||||||
named_g_aclconfctx),
|
named_g_aclconfctx),
|
||||||
"configuring statistics server(s)");
|
"configuring statistics server(s)");
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Configure the network manager
|
||||||
|
*/
|
||||||
obj = NULL;
|
obj = NULL;
|
||||||
result = named_config_get(maps, "tcp-initial-timeout", &obj);
|
result = named_config_get(maps, "tcp-initial-timeout", &obj);
|
||||||
INSIST(result == ISC_R_SUCCESS);
|
INSIST(result == ISC_R_SUCCESS);
|
||||||
@ -8843,6 +8850,44 @@ load_configuration(const char *filename, named_server_t *server,
|
|||||||
isc_nm_settimeouts(named_g_netmgr, initial, idle, keepalive,
|
isc_nm_settimeouts(named_g_netmgr, initial, idle, keepalive,
|
||||||
advertised);
|
advertised);
|
||||||
|
|
||||||
|
#define CAP_IF_NOT_ZERO(v, min, max) \
|
||||||
|
if (v > 0 && v < min) { \
|
||||||
|
recv_tcp_buffer_size = min; \
|
||||||
|
} else if (v > max) { \
|
||||||
|
recv_tcp_buffer_size = max; \
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Set the kernel send and receive buffer sizes */
|
||||||
|
obj = NULL;
|
||||||
|
result = named_config_get(maps, "tcp-receive-buffer", &obj);
|
||||||
|
INSIST(result == ISC_R_SUCCESS);
|
||||||
|
recv_tcp_buffer_size = cfg_obj_asuint32(obj);
|
||||||
|
CAP_IF_NOT_ZERO(recv_tcp_buffer_size, 4096, INT32_MAX);
|
||||||
|
|
||||||
|
obj = NULL;
|
||||||
|
result = named_config_get(maps, "tcp-send-buffer", &obj);
|
||||||
|
INSIST(result == ISC_R_SUCCESS);
|
||||||
|
send_tcp_buffer_size = cfg_obj_asuint32(obj);
|
||||||
|
CAP_IF_NOT_ZERO(send_tcp_buffer_size, 4096, INT32_MAX);
|
||||||
|
|
||||||
|
obj = NULL;
|
||||||
|
result = named_config_get(maps, "udp-receive-buffer", &obj);
|
||||||
|
INSIST(result == ISC_R_SUCCESS);
|
||||||
|
recv_udp_buffer_size = cfg_obj_asuint32(obj);
|
||||||
|
CAP_IF_NOT_ZERO(recv_udp_buffer_size, 4096, INT32_MAX);
|
||||||
|
|
||||||
|
obj = NULL;
|
||||||
|
result = named_config_get(maps, "udp-send-buffer", &obj);
|
||||||
|
INSIST(result == ISC_R_SUCCESS);
|
||||||
|
send_udp_buffer_size = cfg_obj_asuint32(obj);
|
||||||
|
CAP_IF_NOT_ZERO(send_udp_buffer_size, 4096, INT32_MAX);
|
||||||
|
|
||||||
|
isc_nm_setnetbuffers(named_g_netmgr, recv_tcp_buffer_size,
|
||||||
|
send_tcp_buffer_size, recv_udp_buffer_size,
|
||||||
|
send_udp_buffer_size);
|
||||||
|
|
||||||
|
#undef CAP_IF_NOT_ZERO
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Configure sets of UDP query source ports.
|
* Configure sets of UDP query source ports.
|
||||||
*/
|
*/
|
||||||
|
@ -3585,6 +3585,24 @@ Tuning
|
|||||||
milliseconds to prefer IPv6 name servers. The default is ``50``
|
milliseconds to prefer IPv6 name servers. The default is ``50``
|
||||||
milliseconds.
|
milliseconds.
|
||||||
|
|
||||||
|
``tcp-recv-buffer``; ``udp-recv-buffer``
|
||||||
|
These options control the operating system receiving network buffer sizes for
|
||||||
|
TCP and UDP respectively. Buffering on the operating system level can
|
||||||
|
prevent packet drops during short spikes, but if the value is set too large
|
||||||
|
it could clog up a running server with outstanding queries that have already
|
||||||
|
timeouted. The default is ``0`` which means to use the operating system
|
||||||
|
default value. The operating system caps the maximum value that the user can
|
||||||
|
set here.
|
||||||
|
|
||||||
|
``tcp-send-buffer``; ``udp-send-buffer``
|
||||||
|
These options control the operating system sending network buffer sizes for
|
||||||
|
TCP and UDP respectively. Buffering on the operating system level can
|
||||||
|
prevent packet drops during short spikes, but if the value is set too large
|
||||||
|
it could clog up a running server with outstanding queries that have already
|
||||||
|
timeouted. The default is ``0`` which means to use the operating system
|
||||||
|
default value. The operating system caps the maximum value that the user can
|
||||||
|
set here.
|
||||||
|
|
||||||
.. _builtin:
|
.. _builtin:
|
||||||
|
|
||||||
Built-in Server Information Zones
|
Built-in Server Information Zones
|
||||||
|
@ -499,6 +499,8 @@ options {
|
|||||||
tcp\-initial\-timeout integer;
|
tcp\-initial\-timeout integer;
|
||||||
tcp\-keepalive\-timeout integer;
|
tcp\-keepalive\-timeout integer;
|
||||||
tcp\-listen\-queue integer;
|
tcp\-listen\-queue integer;
|
||||||
|
tcp\-receive\-buffer integer;
|
||||||
|
tcp\-send\-buffer integer;
|
||||||
tkey\-dhkey quoted_string integer;
|
tkey\-dhkey quoted_string integer;
|
||||||
tkey\-domain quoted_string;
|
tkey\-domain quoted_string;
|
||||||
tkey\-gssapi\-credential quoted_string;
|
tkey\-gssapi\-credential quoted_string;
|
||||||
@ -515,6 +517,8 @@ options {
|
|||||||
transfers\-per\-ns integer;
|
transfers\-per\-ns integer;
|
||||||
trust\-anchor\-telemetry boolean; // experimental
|
trust\-anchor\-telemetry boolean; // experimental
|
||||||
try\-tcp\-refresh boolean;
|
try\-tcp\-refresh boolean;
|
||||||
|
udp\-receive\-buffer integer;
|
||||||
|
udp\-send\-buffer integer;
|
||||||
update\-check\-ksk boolean;
|
update\-check\-ksk boolean;
|
||||||
use\-alt\-transfer\-source boolean;
|
use\-alt\-transfer\-source boolean;
|
||||||
use\-v4\-udp\-ports { portrange; ... };
|
use\-v4\-udp\-ports { portrange; ... };
|
||||||
|
@ -358,6 +358,8 @@ options {
|
|||||||
tcp-initial-timeout <integer>;
|
tcp-initial-timeout <integer>;
|
||||||
tcp-keepalive-timeout <integer>;
|
tcp-keepalive-timeout <integer>;
|
||||||
tcp-listen-queue <integer>;
|
tcp-listen-queue <integer>;
|
||||||
|
tcp-receive-buffer <integer>;
|
||||||
|
tcp-send-buffer <integer>;
|
||||||
tkey-dhkey <quoted_string> <integer>;
|
tkey-dhkey <quoted_string> <integer>;
|
||||||
tkey-domain <quoted_string>;
|
tkey-domain <quoted_string>;
|
||||||
tkey-gssapi-credential <quoted_string>;
|
tkey-gssapi-credential <quoted_string>;
|
||||||
@ -374,6 +376,8 @@ options {
|
|||||||
transfers-per-ns <integer>;
|
transfers-per-ns <integer>;
|
||||||
trust-anchor-telemetry <boolean>; // experimental
|
trust-anchor-telemetry <boolean>; // experimental
|
||||||
try-tcp-refresh <boolean>;
|
try-tcp-refresh <boolean>;
|
||||||
|
udp-receive-buffer <integer>;
|
||||||
|
udp-send-buffer <integer>;
|
||||||
update-check-ksk <boolean>;
|
update-check-ksk <boolean>;
|
||||||
use-alt-transfer-source <boolean>;
|
use-alt-transfer-source <boolean>;
|
||||||
use-v4-udp-ports { <portrange>; ... };
|
use-v4-udp-ports { <portrange>; ... };
|
||||||
|
@ -355,6 +355,8 @@ options {
|
|||||||
tcp-initial-timeout <integer>;
|
tcp-initial-timeout <integer>;
|
||||||
tcp-keepalive-timeout <integer>;
|
tcp-keepalive-timeout <integer>;
|
||||||
tcp-listen-queue <integer>;
|
tcp-listen-queue <integer>;
|
||||||
|
tcp-receive-buffer <integer>;
|
||||||
|
tcp-send-buffer <integer>;
|
||||||
tkey-dhkey <quoted_string> <integer>;
|
tkey-dhkey <quoted_string> <integer>;
|
||||||
tkey-domain <quoted_string>;
|
tkey-domain <quoted_string>;
|
||||||
tkey-gssapi-credential <quoted_string>;
|
tkey-gssapi-credential <quoted_string>;
|
||||||
@ -371,6 +373,8 @@ options {
|
|||||||
transfers-per-ns <integer>;
|
transfers-per-ns <integer>;
|
||||||
trust-anchor-telemetry <boolean>; // experimental
|
trust-anchor-telemetry <boolean>; // experimental
|
||||||
try-tcp-refresh <boolean>;
|
try-tcp-refresh <boolean>;
|
||||||
|
udp-receive-buffer <integer>;
|
||||||
|
udp-send-buffer <integer>;
|
||||||
update-check-ksk <boolean>;
|
update-check-ksk <boolean>;
|
||||||
use-alt-transfer-source <boolean>;
|
use-alt-transfer-source <boolean>;
|
||||||
use-v4-udp-ports { <portrange>; ... };
|
use-v4-udp-ports { <portrange>; ... };
|
||||||
|
@ -277,6 +277,8 @@
|
|||||||
tcp-initial-timeout <integer>;
|
tcp-initial-timeout <integer>;
|
||||||
tcp-keepalive-timeout <integer>;
|
tcp-keepalive-timeout <integer>;
|
||||||
tcp-listen-queue <integer>;
|
tcp-listen-queue <integer>;
|
||||||
|
tcp-receive-buffer <integer>;
|
||||||
|
tcp-send-buffer <integer>;
|
||||||
tkey-dhkey <quoted_string> <integer>;
|
tkey-dhkey <quoted_string> <integer>;
|
||||||
tkey-domain <quoted_string>;
|
tkey-domain <quoted_string>;
|
||||||
tkey-gssapi-credential <quoted_string>;
|
tkey-gssapi-credential <quoted_string>;
|
||||||
@ -293,6 +295,8 @@
|
|||||||
transfers-per-ns <integer>;
|
transfers-per-ns <integer>;
|
||||||
trust-anchor-telemetry <boolean>; // experimental
|
trust-anchor-telemetry <boolean>; // experimental
|
||||||
try-tcp-refresh <boolean>;
|
try-tcp-refresh <boolean>;
|
||||||
|
udp-receive-buffer <integer>;
|
||||||
|
udp-send-buffer <integer>;
|
||||||
update-check-ksk <boolean>;
|
update-check-ksk <boolean>;
|
||||||
use-alt-transfer-source <boolean>;
|
use-alt-transfer-source <boolean>;
|
||||||
use-v4-udp-ports { <portrange>; ... };
|
use-v4-udp-ports { <portrange>; ... };
|
||||||
|
@ -24,7 +24,14 @@ Known Issues
|
|||||||
New Features
|
New Features
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
|
|
||||||
- None.
|
- New configuration options, ``tcp-receive-buffer``, ``tcp-send-buffer``,
|
||||||
|
``udp-receive-buffer``, and ``udp-send-buffer``, have been added. These
|
||||||
|
options allows the operator to fine tune the receiving and sending
|
||||||
|
buffers in the operating system. On busy servers, increasing the value
|
||||||
|
of the receive buffers can prevent the server from dropping the packets
|
||||||
|
during short spikes, and decreasing the value would prevent the server to
|
||||||
|
became clogged up with queries that are too old and have already timeouted
|
||||||
|
on the receiving side. :gl:`#2313`
|
||||||
|
|
||||||
Removed Features
|
Removed Features
|
||||||
~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~
|
||||||
|
@ -424,6 +424,17 @@ isc_nm_settimeouts(isc_nm_t *mgr, uint32_t init, uint32_t idle,
|
|||||||
* \li 'mgr' is a valid netmgr.
|
* \li 'mgr' is a valid netmgr.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
isc_nm_setnetbuffers(isc_nm_t *mgr, int32_t recv_tcp, int32_t send_tcp,
|
||||||
|
int32_t recv_udp, int32_t send_udp);
|
||||||
|
/*%<
|
||||||
|
* If not 0, sets the SO_RCVBUF and SO_SNDBUF socket options for TCP and UDP
|
||||||
|
* respectively.
|
||||||
|
*
|
||||||
|
* Requires:
|
||||||
|
* \li 'mgr' is a valid netmgr.
|
||||||
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
isc_nm_gettimeouts(isc_nm_t *mgr, uint32_t *initial, uint32_t *idle,
|
isc_nm_gettimeouts(isc_nm_t *mgr, uint32_t *initial, uint32_t *idle,
|
||||||
uint32_t *keepalive, uint32_t *advertised);
|
uint32_t *keepalive, uint32_t *advertised);
|
||||||
|
@ -709,6 +709,14 @@ struct isc_nm {
|
|||||||
isc_barrier_t pausing;
|
isc_barrier_t pausing;
|
||||||
isc_barrier_t resuming;
|
isc_barrier_t resuming;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Socket SO_RCVBUF and SO_SNDBUF values
|
||||||
|
*/
|
||||||
|
atomic_int_fast32_t recv_udp_buffer_size;
|
||||||
|
atomic_int_fast32_t send_udp_buffer_size;
|
||||||
|
atomic_int_fast32_t recv_tcp_buffer_size;
|
||||||
|
atomic_int_fast32_t send_tcp_buffer_size;
|
||||||
|
|
||||||
#ifdef NETMGR_TRACE
|
#ifdef NETMGR_TRACE
|
||||||
ISC_LIST(isc_nmsocket_t) active_sockets;
|
ISC_LIST(isc_nmsocket_t) active_sockets;
|
||||||
#endif
|
#endif
|
||||||
@ -1769,6 +1777,12 @@ isc__nm_socket_tcp_nodelay(uv_os_sock_t fd);
|
|||||||
* Disables Nagle's algorithm on a TCP socket (sets TCP_NODELAY).
|
* Disables Nagle's algorithm on a TCP socket (sets TCP_NODELAY).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
isc__nm_set_network_buffers(isc_nm_t *nm, uv_handle_t *handle);
|
||||||
|
/*%>
|
||||||
|
* Sets the pre-configured network buffers size on the handle.
|
||||||
|
*/
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* typedef all the netievent types
|
* typedef all the netievent types
|
||||||
*/
|
*/
|
||||||
|
@ -615,6 +615,17 @@ isc_nm_settimeouts(isc_nm_t *mgr, uint32_t init, uint32_t idle,
|
|||||||
atomic_store(&mgr->advertised, advertised);
|
atomic_store(&mgr->advertised, advertised);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
isc_nm_setnetbuffers(isc_nm_t *mgr, int32_t recv_tcp, int32_t send_tcp,
|
||||||
|
int32_t recv_udp, int32_t send_udp) {
|
||||||
|
REQUIRE(VALID_NM(mgr));
|
||||||
|
|
||||||
|
atomic_store(&mgr->recv_tcp_buffer_size, recv_tcp);
|
||||||
|
atomic_store(&mgr->send_tcp_buffer_size, send_tcp);
|
||||||
|
atomic_store(&mgr->recv_udp_buffer_size, recv_udp);
|
||||||
|
atomic_store(&mgr->send_udp_buffer_size, send_udp);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
isc_nm_gettimeouts(isc_nm_t *mgr, uint32_t *initial, uint32_t *idle,
|
isc_nm_gettimeouts(isc_nm_t *mgr, uint32_t *initial, uint32_t *idle,
|
||||||
uint32_t *keepalive, uint32_t *advertised) {
|
uint32_t *keepalive, uint32_t *advertised) {
|
||||||
@ -3141,6 +3152,40 @@ isc__nm_socket_tcp_nodelay(uv_os_sock_t fd) {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
isc__nm_set_network_buffers(isc_nm_t *nm, uv_handle_t *handle) {
|
||||||
|
int32_t recv_buffer_size = 0;
|
||||||
|
int32_t send_buffer_size = 0;
|
||||||
|
|
||||||
|
switch (handle->type) {
|
||||||
|
case UV_TCP:
|
||||||
|
recv_buffer_size =
|
||||||
|
atomic_load_relaxed(&nm->recv_tcp_buffer_size);
|
||||||
|
send_buffer_size =
|
||||||
|
atomic_load_relaxed(&nm->send_tcp_buffer_size);
|
||||||
|
break;
|
||||||
|
case UV_UDP:
|
||||||
|
recv_buffer_size =
|
||||||
|
atomic_load_relaxed(&nm->recv_udp_buffer_size);
|
||||||
|
send_buffer_size =
|
||||||
|
atomic_load_relaxed(&nm->send_udp_buffer_size);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
INSIST(0);
|
||||||
|
ISC_UNREACHABLE();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (recv_buffer_size > 0) {
|
||||||
|
int r = uv_recv_buffer_size(handle, &recv_buffer_size);
|
||||||
|
INSIST(r == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (send_buffer_size > 0) {
|
||||||
|
int r = uv_send_buffer_size(handle, &send_buffer_size);
|
||||||
|
INSIST(r == 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef NETMGR_TRACE
|
#ifdef NETMGR_TRACE
|
||||||
/*
|
/*
|
||||||
* Dump all active sockets in netmgr. We output to stderr
|
* Dump all active sockets in netmgr. We output to stderr
|
||||||
|
@ -158,6 +158,8 @@ tcp_connect_direct(isc_nmsocket_t *sock, isc__nm_uvreq_t *req) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isc__nm_set_network_buffers(sock->mgr, &sock->uv_handle.handle);
|
||||||
|
|
||||||
uv_handle_set_data(&req->uv_req.handle, req);
|
uv_handle_set_data(&req->uv_req.handle, req);
|
||||||
r = uv_tcp_connect(&req->uv_req.connect, &sock->uv_handle.tcp,
|
r = uv_tcp_connect(&req->uv_req.connect, &sock->uv_handle.tcp,
|
||||||
&req->peer.type.sa, tcp_connect_cb);
|
&req->peer.type.sa, tcp_connect_cb);
|
||||||
@ -571,6 +573,8 @@ isc__nm_async_tcplisten(isc__networker_t *worker, isc__netievent_t *ev0) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
isc__nm_set_network_buffers(sock->mgr, &sock->uv_handle.handle);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The callback will run in the same thread uv_listen() was called
|
* The callback will run in the same thread uv_listen() was called
|
||||||
* from, so a race with tcp_connection_cb() isn't possible.
|
* from, so a race with tcp_connection_cb() isn't possible.
|
||||||
|
@ -132,6 +132,8 @@ tcpdns_connect_direct(isc_nmsocket_t *sock, isc__nm_uvreq_t *req) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isc__nm_set_network_buffers(sock->mgr, &sock->uv_handle.handle);
|
||||||
|
|
||||||
uv_handle_set_data(&req->uv_req.handle, req);
|
uv_handle_set_data(&req->uv_req.handle, req);
|
||||||
r = uv_tcp_connect(&req->uv_req.connect, &sock->uv_handle.tcp,
|
r = uv_tcp_connect(&req->uv_req.connect, &sock->uv_handle.tcp,
|
||||||
&req->peer.type.sa, tcpdns_connect_cb);
|
&req->peer.type.sa, tcpdns_connect_cb);
|
||||||
@ -540,6 +542,8 @@ isc__nm_async_tcpdnslisten(isc__networker_t *worker, isc__netievent_t *ev0) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
isc__nm_set_network_buffers(sock->mgr, &sock->uv_handle.handle);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The callback will run in the same thread uv_listen() was called
|
* The callback will run in the same thread uv_listen() was called
|
||||||
* from, so a race with tcpdns_connection_cb() isn't possible.
|
* from, so a race with tcpdns_connection_cb() isn't possible.
|
||||||
|
@ -149,6 +149,8 @@ tlsdns_connect_direct(isc_nmsocket_t *sock, isc__nm_uvreq_t *req) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isc__nm_set_network_buffers(sock->mgr, &sock->uv_handle.handle);
|
||||||
|
|
||||||
uv_handle_set_data(&req->uv_req.handle, req);
|
uv_handle_set_data(&req->uv_req.handle, req);
|
||||||
r = uv_tcp_connect(&req->uv_req.connect, &sock->uv_handle.tcp,
|
r = uv_tcp_connect(&req->uv_req.connect, &sock->uv_handle.tcp,
|
||||||
&req->peer.type.sa, tlsdns_connect_cb);
|
&req->peer.type.sa, tlsdns_connect_cb);
|
||||||
@ -610,6 +612,8 @@ isc__nm_async_tlsdnslisten(isc__networker_t *worker, isc__netievent_t *ev0) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
isc__nm_set_network_buffers(sock->mgr, &sock->uv_handle.handle);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The callback will run in the same thread uv_listen() was
|
* The callback will run in the same thread uv_listen() was
|
||||||
* called from, so a race with tlsdns_connection_cb() isn't
|
* called from, so a race with tlsdns_connection_cb() isn't
|
||||||
|
@ -274,14 +274,8 @@ isc__nm_async_udplisten(isc__networker_t *worker, isc__netievent_t *ev0) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef ISC_RECV_BUFFER_SIZE
|
isc__nm_set_network_buffers(sock->mgr, &sock->uv_handle.handle);
|
||||||
uv_recv_buffer_size(&sock->uv_handle.handle,
|
|
||||||
&(int){ ISC_RECV_BUFFER_SIZE });
|
|
||||||
#endif
|
|
||||||
#ifdef ISC_SEND_BUFFER_SIZE
|
|
||||||
uv_send_buffer_size(&sock->uv_handle.handle,
|
|
||||||
&(int){ ISC_SEND_BUFFER_SIZE });
|
|
||||||
#endif
|
|
||||||
r = uv_udp_recv_start(&sock->uv_handle.udp, isc__nm_alloc_cb,
|
r = uv_udp_recv_start(&sock->uv_handle.udp, isc__nm_alloc_cb,
|
||||||
udp_recv_cb);
|
udp_recv_cb);
|
||||||
if (r != 0) {
|
if (r != 0) {
|
||||||
@ -647,14 +641,7 @@ udp_connect_direct(isc_nmsocket_t *sock, isc__nm_uvreq_t *req) {
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef ISC_RECV_BUFFER_SIZE
|
isc__nm_set_network_buffers(sock->mgr, &sock->uv_handle.handle);
|
||||||
uv_recv_buffer_size(&sock->uv_handle.handle,
|
|
||||||
&(int){ ISC_RECV_BUFFER_SIZE });
|
|
||||||
#endif
|
|
||||||
#ifdef ISC_SEND_BUFFER_SIZE
|
|
||||||
uv_send_buffer_size(&sock->uv_handle.handle,
|
|
||||||
&(int){ ISC_SEND_BUFFER_SIZE });
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* On FreeBSD the UDP connect() call sometimes results in a
|
* On FreeBSD the UDP connect() call sometimes results in a
|
||||||
|
@ -471,6 +471,7 @@ isc_nm_stoplistening
|
|||||||
isc_nm_tcpconnect
|
isc_nm_tcpconnect
|
||||||
isc_nm_tcpdnsconnect
|
isc_nm_tcpdnsconnect
|
||||||
isc_nm_gettimeouts
|
isc_nm_gettimeouts
|
||||||
|
isc_nm_setnetbuffers
|
||||||
isc_nm_settimeouts
|
isc_nm_settimeouts
|
||||||
isc_nm_tcpdns_keepalive
|
isc_nm_tcpdns_keepalive
|
||||||
isc_nm_tcpdns_sequential
|
isc_nm_tcpdns_sequential
|
||||||
|
@ -1268,6 +1268,8 @@ static cfg_clausedef_t options_clauses[] = {
|
|||||||
{ "tcp-initial-timeout", &cfg_type_uint32, 0 },
|
{ "tcp-initial-timeout", &cfg_type_uint32, 0 },
|
||||||
{ "tcp-keepalive-timeout", &cfg_type_uint32, 0 },
|
{ "tcp-keepalive-timeout", &cfg_type_uint32, 0 },
|
||||||
{ "tcp-listen-queue", &cfg_type_uint32, 0 },
|
{ "tcp-listen-queue", &cfg_type_uint32, 0 },
|
||||||
|
{ "tcp-receive-buffer", &cfg_type_uint32, 0 },
|
||||||
|
{ "tcp-send-buffer", &cfg_type_uint32, 0 },
|
||||||
{ "tkey-dhkey", &cfg_type_tkey_dhkey, 0 },
|
{ "tkey-dhkey", &cfg_type_tkey_dhkey, 0 },
|
||||||
{ "tkey-domain", &cfg_type_qstring, 0 },
|
{ "tkey-domain", &cfg_type_qstring, 0 },
|
||||||
{ "tkey-gssapi-credential", &cfg_type_qstring, 0 },
|
{ "tkey-gssapi-credential", &cfg_type_qstring, 0 },
|
||||||
@ -1277,6 +1279,8 @@ static cfg_clausedef_t options_clauses[] = {
|
|||||||
{ "transfers-out", &cfg_type_uint32, 0 },
|
{ "transfers-out", &cfg_type_uint32, 0 },
|
||||||
{ "transfers-per-ns", &cfg_type_uint32, 0 },
|
{ "transfers-per-ns", &cfg_type_uint32, 0 },
|
||||||
{ "treat-cr-as-space", NULL, CFG_CLAUSEFLAG_ANCIENT },
|
{ "treat-cr-as-space", NULL, CFG_CLAUSEFLAG_ANCIENT },
|
||||||
|
{ "udp-receive-buffer", &cfg_type_uint32, 0 },
|
||||||
|
{ "udp-send-buffer", &cfg_type_uint32, 0 },
|
||||||
{ "use-id-pool", NULL, CFG_CLAUSEFLAG_ANCIENT },
|
{ "use-id-pool", NULL, CFG_CLAUSEFLAG_ANCIENT },
|
||||||
{ "use-ixfr", NULL, CFG_CLAUSEFLAG_ANCIENT },
|
{ "use-ixfr", NULL, CFG_CLAUSEFLAG_ANCIENT },
|
||||||
{ "use-v4-udp-ports", &cfg_type_bracketed_portlist, 0 },
|
{ "use-v4-udp-ports", &cfg_type_bracketed_portlist, 0 },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user