mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-29 05:28:00 +00:00
Fix RPZ bug when resuming a query during a reconfiguration
After a reconfiguration the old view can be left without a valid 'rpzs' member, because when the RPZ is not changed during the named reconfiguration 'rpzs' "migrate" from the old view into the new view, so when a query resumes it can find that 'qctx->view->rpzs' is NULL which query_resume() currently doesn't expect to happen if it's recursing and 'qctx->rpz_st' is not NULL. Fix the issue by adding a NULL-check. In order to not split the log message to two different log messages depending on whether 'qctx->view->rpzs' is NULL or not, change the message to not log the RPZ policy's "version" which is just a runtime counter and is most likely not very useful for the users. (cherry picked from commit 3ea2fbc238e0d933b9f87dfd8fdab9233d978e33)
This commit is contained in:
parent
b601cb32ee
commit
f1ec774f9a
@ -6798,14 +6798,13 @@ query_resume(query_ctx_t *qctx) {
|
|||||||
/*
|
/*
|
||||||
* Has response policy changed out from under us?
|
* Has response policy changed out from under us?
|
||||||
*/
|
*/
|
||||||
if (qctx->rpz_st->rpz_ver != qctx->view->rpzs->rpz_ver) {
|
if (qctx->view->rpzs == NULL ||
|
||||||
|
qctx->rpz_st->rpz_ver != qctx->view->rpzs->rpz_ver)
|
||||||
|
{
|
||||||
ns_client_log(qctx->client, NS_LOGCATEGORY_CLIENT,
|
ns_client_log(qctx->client, NS_LOGCATEGORY_CLIENT,
|
||||||
NS_LOGMODULE_QUERY, DNS_RPZ_INFO_LEVEL,
|
NS_LOGMODULE_QUERY, DNS_RPZ_INFO_LEVEL,
|
||||||
"query_resume: RPZ settings "
|
"query_resume: RPZ settings out of date "
|
||||||
"out of date "
|
"after of a reconfiguration");
|
||||||
"(rpz_ver %d, expected %d)",
|
|
||||||
qctx->view->rpzs->rpz_ver,
|
|
||||||
qctx->rpz_st->rpz_ver);
|
|
||||||
QUERY_ERROR(qctx, DNS_R_SERVFAIL);
|
QUERY_ERROR(qctx, DNS_R_SERVFAIL);
|
||||||
return ns_query_done(qctx);
|
return ns_query_done(qctx);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user