/* NS below cut in authority indicates different authority,
* but same NS set. */
qry->zone_cut.name = knot_dname_copy(rr->owner, &req->pool);
- /* Process as referral unless the NS is actually the target of the current query. */
- if (!knot_dname_is_equal(rr->owner, qry->sname))
- result = KR_STATE_DONE;
}
}
}
}
/* Resolve authority to see if it's referral or authoritative. */
- bool is_referral_and_auth = knot_wire_get_aa(pkt->wire);
int state = process_authority(pkt, req);
switch(state) {
case KR_STATE_CONSUME: /* Not referral, process answer. */
break;
case KR_STATE_DONE: /* Referral */
state = process_referral_answer(pkt,req);
- /* Continue with the server when switching from parent to child zone
- * side of the delegation on the same nameserver. */
- if (state == KR_STATE_DONE && is_referral_and_auth) {
- state = KR_STATE_CONSUME;
- }
VERBOSE_MSG("<= referral response, follow\n");
break;
default:
/* Found the entry to merge with. Check consistency and merge. */
bool ok = stashed->rank == rank && !stashed->cached;
if (!ok) {
+ assert(false);
return kr_error(EEXIST);
}
/* It may happen that an RRset is first considered useful