2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-30 22:15:20 +00:00

Handle CNAME and DNAME in resume_min in a special way

When authoritative zone is loaded when query minimization query for the
same zone is already pending, it might receive unexpected result codes.

Normally DNS_R_CNAME would follow to query_cname after processing sent
events, but dns_view_findzonecut does not fill CNAME target into
event->foundevent. Usual lookup via query_lookup would always have that
filled.

Ideally we would restart the query with unmodified search name, if
unexpected change from recursing to local zone cut were detected. Until
dns_view_findzonecut is modified to export zone/cache source of the cut,
at least fail queries which went into unexpected state.
This commit is contained in:
Petr Mensik
2025-06-03 21:00:58 +02:00
committed by Mark Andrews
parent f0ca86be7c
commit 2fd3da54f9

View File

@@ -4284,8 +4284,14 @@ resume_qmin(void *arg) {
* DNS_R_NXDOMAIN here means we have not loaded the root zone
* mirror yet - but DNS_R_NXDOMAIN is not a valid return value
* when doing recursion, we need to patch it.
*
* CNAME or DNAME means zone were added with that record
* after the start of a recursion. It means we do not have
* initialized correct hevent->foundname and have to fail.
*/
if (result == DNS_R_NXDOMAIN) {
if (result == DNS_R_NXDOMAIN || result == DNS_R_CNAME ||
result == DNS_R_DNAME)
{
result = DNS_R_SERVFAIL;
}