From: Grigorii Demidov Date: Mon, 22 May 2017 13:06:06 +0000 (+0200) Subject: lib/resolve: special processing for deferred answers X-Git-Tag: 1.3.0-rc1~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1704baedaaa41255eccd2d68bad811eb5c4a7caf;p=thirdparty%2Fknot-resolver.git lib/resolve: special processing for deferred answers --- diff --git a/lib/layer/validate.c b/lib/layer/validate.c index a6e409613..1fa045096 100644 --- a/lib/layer/validate.c +++ b/lib/layer/validate.c @@ -639,6 +639,8 @@ static int check_signer(kr_layer_t *ctx, knot_pkt_t *pkt) qry->parent->flags &= ~QUERY_DNSSEC_WANT; qry->parent->flags |= QUERY_DNSSEC_INSECURE; } + } else { + qry->zone_cut.name = knot_dname_copy(signer, &req->pool); } } } else if (!knot_dname_is_equal(signer, qry->zone_cut.name)) { diff --git a/lib/resolve.c b/lib/resolve.c index 21c50a76b..c5b47b5ec 100644 --- a/lib/resolve.c +++ b/lib/resolve.c @@ -993,7 +993,8 @@ static int forward_trust_chain_check(struct kr_request *request, struct kr_query } if (qry->parent == NULL && - ds_req && !ns_req && (minimized || resume)) { + ds_req && !ns_req && (minimized || resume) && + !knot_dname_is_equal(qry->zone_cut.name, wanted_name)) { struct kr_query *next = kr_rplan_push(rplan, qry, wanted_name, qry->sclass, KNOT_RRTYPE_NS); if (!next) {