Remove the keep-response-order ACL map

The keep-response-order option has been obsoleted, and in this commit,
remove the keep-response-order ACL map rendering the option no-op, the
call the isc_nm_sequential() and the now unused isc_nm_sequential()
function itself.
This commit is contained in:
Ondřej Surý 2022-01-27 10:09:07 +01:00
parent 30f4bdb17e
commit d01562f22b
8 changed files with 6 additions and 92 deletions

View file

@ -8698,15 +8698,6 @@ load_configuration(const char *filename, named_server_t *server,
server->sctx->blackholeacl);
}
/*
* Set "keep-response-order". Only legal at options or
* global defaults level.
*/
CHECK(configure_view_acl(NULL, config, named_g_config,
"keep-response-order", NULL,
named_g_aclconfctx, named_g_mctx,
&server->sctx->keepresporder));
obj = NULL;
result = named_config_get(maps, "match-mapped-addresses", &obj);
INSIST(result == ISC_R_SUCCESS);

View file

@ -529,11 +529,9 @@ check_viewacls(cfg_aclconfctx_t *actx, const cfg_obj_t *voptions,
int i = 0;
static const char *acls[] = {
"allow-query", "allow-query-on",
"allow-query-cache", "allow-query-cache-on",
"blackhole", "keep-response-order",
"match-clients", "match-destinations",
"sortlist", NULL
"allow-query", "allow-query-on", "allow-query-cache",
"allow-query-cache-on", "blackhole", "match-clients",
"match-destinations", "sortlist", NULL
};
while (acls[i] != NULL) {

View file

@ -395,24 +395,6 @@ isc_nm_listentlsdns(isc_nm_t *mgr, isc_sockaddr_t *iface,
* Same as isc_nm_listentcpdns but for an SSL (DoT) socket.
*/
void
isc_nm_sequential(isc_nmhandle_t *handle);
/*%<
* Disable pipelining on this connection. Each DNS packet will be only
* processed after the previous completes.
*
* The socket must be unpaused after the query is processed. This is done
* the response is sent, or if we're dropping the query, it will be done
* when a handle is fully dereferenced by calling the socket's
* closehandle_cb callback.
*
* Note: This can only be run while a message is being processed; if it is
* run before any messages are read, no messages will be read.
*
* Also note: once this has been set, it cannot be reversed for a given
* connection.
*/
void
isc_nm_settimeouts(isc_nm_t *mgr, uint32_t init, uint32_t idle,
uint32_t keepalive, uint32_t advertised);

View file

@ -1021,11 +1021,6 @@ struct isc_nmsocket {
*/
atomic_bool client;
/*%
* TCPDNS socket has been set not to pipeline.
*/
atomic_bool sequential;
/*%
* The socket is processing read callback, this is guard to not read
* data before the readcb is back.

View file

@ -1567,7 +1567,6 @@ isc___nmsocket_init(isc_nmsocket_t *sock, isc_nm_t *mgr, isc_nmsocket_type type,
sock, isc_refcount_current(&sock->references));
atomic_init(&sock->active, true);
atomic_init(&sock->sequential, false);
atomic_init(&sock->readpaused, false);
atomic_init(&sock->closing, false);
atomic_init(&sock->listening, 0);
@ -2334,9 +2333,8 @@ processbuffer(isc_nmsocket_t *sock) {
* If we only have an incomplete DNS message, we don't touch any
* timers. If we do have a full message, reset the timer.
*
* Stop reading if this is a client socket, or if the server socket
* has been set to sequential mode. In this case we'll be called again
* later by isc__nm_resume_processing().
* Stop reading if this is a client socket. In this case we'll be
* called again later by isc__nm_resume_processing().
*/
void
isc__nm_process_sock_buffer(isc_nmsocket_t *sock) {
@ -2372,8 +2370,7 @@ isc__nm_process_sock_buffer(isc_nmsocket_t *sock) {
*/
isc__nmsocket_timer_stop(sock);
if (atomic_load(&sock->client) ||
atomic_load(&sock->sequential)) {
if (atomic_load(&sock->client)) {
isc__nm_stop_reading(sock);
return;
}
@ -3447,39 +3444,6 @@ isc_nm_work_offload(isc_nm_t *netmgr, isc_nm_workcb_t work_cb,
UV_RUNTIME_CHECK(uv_queue_work, r);
}
void
isc_nm_sequential(isc_nmhandle_t *handle) {
isc_nmsocket_t *sock = NULL;
REQUIRE(VALID_NMHANDLE(handle));
REQUIRE(VALID_NMSOCK(handle->sock));
sock = handle->sock;
switch (sock->type) {
case isc_nm_tcpdnssocket:
case isc_nm_tlsdnssocket:
break;
case isc_nm_httpsocket:
return;
default:
INSIST(0);
ISC_UNREACHABLE();
}
/*
* We don't want pipelining on this connection. That means
* that we need to pause after reading each request, and
* resume only after the request has been processed. This
* is done in isc__nm_resume_processing(), which is the
* socket's closehandle_cb callback, called whenever a handle
* is released.
*/
isc__nmsocket_timer_stop(sock);
isc__nm_stop_reading(sock);
atomic_store(&sock->sequential, true);
}
void
isc_nm_bad_request(isc_nmhandle_t *handle) {
isc_nmsocket_t *sock = NULL;

View file

@ -1915,18 +1915,6 @@ ns__client_request(isc_nmhandle_t *handle, isc_result_t eresult,
return;
}
/*
* Disable pipelined TCP query processing if necessary.
*/
if (TCP_CLIENT(client) &&
(client->message->opcode != dns_opcode_query ||
(client->sctx->keepresporder != NULL &&
dns_acl_allowed(&netaddr, NULL, client->sctx->keepresporder,
env))))
{
isc_nm_sequential(handle);
}
dns_opcodestats_increment(client->sctx->opcodestats,
client->message->opcode);
switch (client->message->opcode) {

View file

@ -90,7 +90,6 @@ struct ns_server {
uint32_t options;
dns_acl_t *blackholeacl;
dns_acl_t *keepresporder;
uint16_t udpsize;
uint16_t transfer_tcp_message_size;
bool interface_auto;

View file

@ -158,9 +158,6 @@ ns_server_detach(ns_server_t **sctxp) {
if (sctx->blackholeacl != NULL) {
dns_acl_detach(&sctx->blackholeacl);
}
if (sctx->keepresporder != NULL) {
dns_acl_detach(&sctx->keepresporder);
}
if (sctx->tkeyctx != NULL) {
dns_tkeyctx_destroy(&sctx->tkeyctx);
}