Merge branch '1067-underflow-recursing-clients-stats' into 'master'

Resolve "Underflow in Stats Channel RecursClients value?"

Closes #1067

See merge request isc-projects/bind9!2030
This commit is contained in:
Witold Krecicki 2019-06-13 08:19:32 -04:00
commit fd8adb1282
2 changed files with 28 additions and 11 deletions

View file

@ -1,3 +1,7 @@
5249. [bug] Fix a possible underflow in recursion clients
statistics when hitting recursive clients
soft quota. [GL #1067]
5248. [func] To clarify the configuration of DNSSEC keys,
the "managed-keys" and "trusted-keys" options
have both been deprecated. The new "dnssec-keys"

View file

@ -2487,12 +2487,18 @@ query_prefetch(ns_client_t *client, dns_name_t *qname,
if (client->recursionquota == NULL) {
result = isc_quota_attach(&client->sctx->recursionquota,
&client->recursionquota);
if (result == ISC_R_SUCCESS && !client->mortal && !TCP(client))
if (result == ISC_R_SUCCESS || result == ISC_R_SOFTQUOTA) {
ns_stats_increment(client->sctx->nsstats,
ns_statscounter_recursclients);
}
if (result == ISC_R_SUCCESS && !client->mortal &&
!TCP(client))
{
result = ns_client_replace(client);
if (result != ISC_R_SUCCESS)
}
if (result != ISC_R_SUCCESS) {
return;
ns_stats_increment(client->sctx->nsstats,
ns_statscounter_recursclients);
}
}
tmprdataset = ns_client_newrdataset(client);
@ -2694,12 +2700,18 @@ query_rpzfetch(ns_client_t *client, dns_name_t *qname, dns_rdatatype_t type) {
if (client->recursionquota == NULL) {
result = isc_quota_attach(&client->sctx->recursionquota,
&client->recursionquota);
if (result == ISC_R_SUCCESS && !client->mortal && !TCP(client))
if (result == ISC_R_SUCCESS || result == ISC_R_SOFTQUOTA) {
ns_stats_increment(client->sctx->nsstats,
ns_statscounter_recursclients);
}
if (result == ISC_R_SUCCESS && !client->mortal &&
!TCP(client))
{
result = ns_client_replace(client);
if (result != ISC_R_SUCCESS)
}
if (result != ISC_R_SUCCESS) {
return;
ns_stats_increment(client->sctx->nsstats,
ns_statscounter_recursclients);
}
}
tmprdataset = ns_client_newrdataset(client);
@ -5720,9 +5732,10 @@ ns_query_recurse(ns_client_t *client, dns_rdatatype_t qtype, dns_name_t *qname,
if (client->recursionquota == NULL) {
result = isc_quota_attach(&client->sctx->recursionquota,
&client->recursionquota);
ns_stats_increment(client->sctx->nsstats,
ns_statscounter_recursclients);
if (result == ISC_R_SUCCESS || result == ISC_R_SOFTQUOTA) {
ns_stats_increment(client->sctx->nsstats,
ns_statscounter_recursclients);
}
if (result == ISC_R_SOFTQUOTA) {
static atomic_uint_fast32_t last = 0;