From: Vladimír Čunát Date: Tue, 3 Jan 2017 09:02:44 +0000 (+0100) Subject: iterate: answer NOTIMPL to other classes than IN X-Git-Tag: v1.2.0-rc1~43^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=fa560cde32083bac6aec2a1eba39de925e185d44;p=thirdparty%2Fknot-resolver.git iterate: answer NOTIMPL to other classes than IN At least until we implement them properly. --- diff --git a/lib/layer/iterate.c b/lib/layer/iterate.c index 4230030f3..d662b83c0 100644 --- a/lib/layer/iterate.c +++ b/lib/layer/iterate.c @@ -67,7 +67,7 @@ static bool is_paired_to_query(const knot_pkt_t *answer, struct kr_query *query) return query->id == knot_wire_get_id(answer->wire) && knot_wire_get_qdcount(answer->wire) > 0 && - (query->sclass == KNOT_CLASS_ANY || query->sclass == knot_pkt_qclass(answer)) && + query->sclass == knot_pkt_qclass(answer) && qtype == knot_pkt_qtype(answer) && knot_dname_is_equal(qname, knot_pkt_qname(answer)); } @@ -527,6 +527,14 @@ static int begin(kr_layer_t *ctx) if (!pkt || knot_wire_get_qdcount(pkt->wire) == 0) { return KR_STATE_FAIL; } + + struct kr_query *qry = ctx->req->current_query; + /* Avoid any other classes. */ + if (qry->sclass != KNOT_CLASS_IN) { + knot_wire_set_rcode(ctx->req->answer->wire, KNOT_RCODE_NOTIMPL); + return KR_STATE_FAIL; + } + return reset(ctx); }