As kresd works now, typically we do not know whether these records are
bogus, as with +cd we do not attempt validation. Still, it's possible
that we have those records in cache from an occasion without +cd, in
which case we know they're bogus and this regression happened.
The potential impact of this issue seems minimal.
Bugfixes
--------
- rebinding module: fix handling some requests, respect ALLOW_LOCAL flag
+- fix incorrect SERVFAIL on cached bogus answer for +cd request (!860)
+ (regression since 4.1.0 release, in less common cases)
Knot Resolver 4.2.0 (2019-08-05)
/* TODO: clean this up in !660 or followup, and it isn't foolproof anyway. */
if (last->flags.DNSSEC_BOGUS
|| (rplan->pending.len > 0 && array_tail(rplan->pending)->flags.DNSSEC_BOGUS)) {
- answer_fail(request);
- return;
+ if (!knot_wire_get_cd(request->qsource.packet->wire)) {
+ answer_fail(request);
+ return;
+ }
}
/* AD flag. We can only change `secure` from true to false.