mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 13:38:26 +00:00
Accept overquota TCP connection on local thread if possible
If the quota callback is called on a thread matching the socket, call the TCP accept function directly instead of using isc_async_run() which allocates-deallocates memory.
This commit is contained in:
parent
0a468e7c9e
commit
d27f6f2d68
@ -865,8 +865,15 @@ quota_accept_cb(isc_quota_t *quota, void *arg) {
|
||||
* This needs to be asynchronous, because the quota might have been
|
||||
* released by a different child socket.
|
||||
*/
|
||||
isc__nmsocket_attach(sock, &(isc_nmsocket_t *){ NULL });
|
||||
isc_async_run(sock->worker->loop, tcpaccept_cb, sock);
|
||||
if (sock->tid == isc_tid()) {
|
||||
isc_result_t result = accept_connection(sock);
|
||||
isc__nm_accept_connection_log(sock, result,
|
||||
can_log_tcp_quota());
|
||||
sock->pquota = NULL;
|
||||
} else {
|
||||
isc__nmsocket_attach(sock, &(isc_nmsocket_t *){ NULL });
|
||||
isc_async_run(sock->worker->loop, tcpaccept_cb, sock);
|
||||
}
|
||||
}
|
||||
|
||||
static isc_result_t
|
||||
|
Loading…
x
Reference in New Issue
Block a user