if (state != kr_ok()) {
return state;
}
+ } else if ((query->flags & QUERY_FORWARD) &&
+ ((query->stype == KNOT_RRTYPE_DS) ||
+ (query->stype == KNOT_RRTYPE_NS))) {
+ /* CNAME'ed answer for DS or NS subquery.
+ * Treat it as proof of zonecut nonexistance. */
+ return KR_STATE_DONE;
}
VERBOSE_MSG("<= cname chain, following\n");
/* Check if the same query was followed in the same CNAME chain. */
if (qry->flags & QUERY_DNSSEC_NODS) {
nods = true;
}
+ if (qry->flags & QUERY_CNAME) {
+ nods = true;
+ ns_req = true;
+ }
if (!(q->flags & QUERY_DNSSEC_OPTOUT)) {
int ret = kr_dnssec_matches_name_and_type(&request->auth_selected, q->uid,
wanted_name, KNOT_RRTYPE_NS);