diff --git a/bin/named/client.c b/bin/named/client.c index d482da7121..0739dd48af 100644 --- a/bin/named/client.c +++ b/bin/named/client.c @@ -421,8 +421,19 @@ exit_check(ns_client_t *client) { isc_socket_detach(&client->tcpsocket); } - if (client->tcpquota != NULL) + if (client->tcpquota != NULL) { isc_quota_detach(&client->tcpquota); + } else { + /* + * We went over quota with this client, we don't + * want to restart listening unless this is the + * last client on this interface, which is + * checked later. + */ + if (TCP_CLIENT(client)) { + client->mortal = true; + } + } if (client->timerset) { (void)isc_timer_reset(client->timer,