]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
lib/resolve: special processing for deferred answers
authorGrigorii Demidov <grigorii.demidov@nic.cz>
Mon, 22 May 2017 13:06:06 +0000 (15:06 +0200)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Thu, 1 Jun 2017 14:27:16 +0000 (16:27 +0200)
lib/layer/validate.c
lib/resolve.c

index a6e409613f577e5c3d54b3ffb62568fcd65d83ba..1fa0450961effa0838470ce5f45062ff489d991a 100644 (file)
@@ -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)) {
index 21c50a76b243f848a41fece05144da5a07aa71b1..c5b47b5ec7f65d7e3e0c56e1527b53a1e1a3a06b 100644 (file)
@@ -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) {