From: Marek VavruĊĦa Date: Fri, 24 Apr 2015 07:09:00 +0000 (+0200) Subject: lib/resolve: initialize answer from query (if provided) X-Git-Tag: v1.0.0-beta1~228^2~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=970a12c7b72ef1bbad768e76157ab215bb211b06;p=thirdparty%2Fknot-resolver.git lib/resolve: initialize answer from query (if provided) --- diff --git a/lib/resolve.c b/lib/resolve.c index 85650c275..5c4c70e88 100644 --- a/lib/resolve.c +++ b/lib/resolve.c @@ -216,7 +216,7 @@ int kr_resolve_query(struct kr_request *request, const knot_dname_t *qname, uint return KNOT_STATE_FAIL; } - /* Create answer packet */ + /* Initialize answer packet */ knot_pkt_t *answer = request->answer; knot_wire_set_qr(answer->wire); knot_wire_clear_aa(answer->wire); @@ -233,7 +233,10 @@ int kr_resolve_consume(struct kr_request *request, knot_pkt_t *packet) struct kr_query *qry = kr_rplan_current(rplan); /* Empty resolution plan, push packet as the new query */ - if (kr_rplan_empty(&request->rplan)) { + if (kr_rplan_empty(rplan)) { + if (knot_pkt_init_response(request->answer, packet) != 0) { + return KNOT_STATE_FAIL; + } const knot_dname_t *qname = knot_pkt_qname(packet); uint16_t qclass = knot_pkt_qclass(packet); uint16_t qtype = knot_pkt_qtype(packet); diff --git a/lib/rplan.c b/lib/rplan.c index a66b16c1f..7438b66f1 100644 --- a/lib/rplan.c +++ b/lib/rplan.c @@ -145,7 +145,7 @@ int kr_rplan_pop(struct kr_rplan *rplan, struct kr_query *qry) struct kr_query *kr_rplan_current(struct kr_rplan *rplan) { - if (rplan == NULL || EMPTY_LIST(rplan->pending)) { + if (kr_rplan_empty(rplan)) { return NULL; }