diff --git a/lib/layer/validate.c b/lib/layer/validate.c index 9fb3f3c3853b4126948321551fca07a1d6471337..d544d79d1cd259aa2ebe8f8be4ea80d12950bd28 100644 --- a/lib/layer/validate.c +++ b/lib/layer/validate.c @@ -349,6 +349,9 @@ static int validate(knot_layer_t *ctx, knot_pkt_t *pkt) const knot_dname_t *sig_name = first_rrsig_signer_name(pkt); if (use_signatures && key_own && sig_name && !knot_dname_is_equal(key_own, sig_name)) { DEBUG_MSG(qry, ">< cut changed, needs revalidation\n"); + if (knot_dname_is_sub(sig_name, qry->zone_cut.name)) { + qry->zone_cut.name = knot_dname_copy(sig_name, &req->pool); + } knot_wire_set_rcode(pkt->wire, KNOT_RCODE_SERVFAIL); /* Prevent caching */ qry->flags &= ~QUERY_RESOLVED; return KNOT_STATE_CONSUME;