mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-27 12:13:20 -04:00
On shutdown, reset the established TCP connections
Previously, the established TCP connections (both client and server)
would be gracefully closed waiting for the write timeout.
Don't wait for TCP connections to gracefully shutdown, but directly
reset them for faster shutdown.
(cherry picked from commit 6ddac2d56d)
This commit is contained in:
parent
27e47c5101
commit
fd351a60ff
1 changed files with 24 additions and 4 deletions
|
|
@ -2814,6 +2814,7 @@ reset_shutdown(uv_handle_t *handle) {
|
|||
isc_nmsocket_t *sock = uv_handle_get_data(handle);
|
||||
|
||||
isc__nmsocket_shutdown(sock);
|
||||
isc__nmsocket_detach(&sock);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -2836,14 +2837,19 @@ isc__nmsocket_reset(isc_nmsocket_t *sock) {
|
|||
break;
|
||||
}
|
||||
|
||||
if (!uv_is_closing(&sock->uv_handle.handle)) {
|
||||
if (!uv_is_closing(&sock->uv_handle.handle) &&
|
||||
uv_is_active(&sock->uv_handle.handle))
|
||||
{
|
||||
/*
|
||||
* The real shutdown will be handled in the respective
|
||||
* close functions.
|
||||
*/
|
||||
isc__nmsocket_attach(sock, &(isc_nmsocket_t *){ NULL });
|
||||
int r = uv_tcp_close_reset(&sock->uv_handle.tcp,
|
||||
reset_shutdown);
|
||||
UV_RUNTIME_CHECK(uv_tcp_close_reset, r);
|
||||
} else {
|
||||
isc__nmsocket_shutdown(sock);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2885,13 +2891,27 @@ shutdown_walk_cb(uv_handle_t *handle, void *arg) {
|
|||
|
||||
switch (handle->type) {
|
||||
case UV_UDP:
|
||||
isc__nmsocket_shutdown(sock);
|
||||
return;
|
||||
case UV_TCP:
|
||||
break;
|
||||
switch (sock->type) {
|
||||
case isc_nm_tcpsocket:
|
||||
case isc_nm_tcpdnssocket:
|
||||
case isc_nm_tlsdnssocket:
|
||||
if (sock->parent == NULL) {
|
||||
/* Reset the TCP connections on shutdown */
|
||||
isc__nmsocket_reset(sock);
|
||||
return;
|
||||
}
|
||||
/* FALLTHROUGH */
|
||||
default:
|
||||
isc__nmsocket_shutdown(sock);
|
||||
}
|
||||
|
||||
return;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
isc__nmsocket_shutdown(sock);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Reference in a new issue