From: Grigorii Demidov Date: Mon, 23 Jan 2017 20:14:29 +0000 (+0100) Subject: layer/validate: some bugfixes X-Git-Tag: v1.2.0-rc3~1^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=39ecb090988be471c1f2ab3b05da6c46a19c49c6;p=thirdparty%2Fknot-resolver.git layer/validate: some bugfixes --- diff --git a/lib/layer/iterate.c b/lib/layer/iterate.c index 4101d8a67..feb28ed35 100644 --- a/lib/layer/iterate.c +++ b/lib/layer/iterate.c @@ -311,9 +311,10 @@ static int process_authority(knot_pkt_t *pkt, struct kr_request *req) return KR_STATE_CONSUME; } #else + /* Work around servers sending back CNAME with different delegation and no AA. */ const knot_pktsection_t *an = knot_pkt_section(pkt, KNOT_ANSWER); - if (an->count > 0 && ns->count > 0) { + if (!knot_wire_get_aa(pkt->wire) && an->count > 0 && ns->count > 0) { const knot_rrset_t *rr = knot_pkt_rr(an, 0); if (rr->type == KNOT_RRTYPE_CNAME) { return KR_STATE_CONSUME; diff --git a/lib/layer/validate.c b/lib/layer/validate.c index 7eb627d3d..8f3fea1b3 100644 --- a/lib/layer/validate.c +++ b/lib/layer/validate.c @@ -454,7 +454,7 @@ static int check_validation_result(kr_layer_t *ctx, ranked_rr_array_t *arr) ranked_rr_array_entry_t *invalid_entry = NULL; for (size_t i = 0; i < arr->len; ++i) { ranked_rr_array_entry_t *entry = arr->at[i]; - if (entry->yielded) { + if (entry->yielded || entry->qry_uid != qry->uid) { continue; } if (entry->rank == KR_VLDRANK_MISMATCH) { diff --git a/tests/deckard b/tests/deckard index 0dcc0ddbf..65d0af0c9 160000 --- a/tests/deckard +++ b/tests/deckard @@ -1 +1 @@ -Subproject commit 0dcc0ddbf13d1eb93dbc94e02a6a9aec567fa903 +Subproject commit 65d0af0c9d66746c4c1d9ad3126ecee117a9675e