]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
lib/resolve: initialize answer from query (if provided)
authorMarek Vavruša <marek.vavrusa@nic.cz>
Fri, 24 Apr 2015 07:09:00 +0000 (09:09 +0200)
committerMarek Vavruša <marek.vavrusa@nic.cz>
Fri, 24 Apr 2015 07:09:00 +0000 (09:09 +0200)
lib/resolve.c
lib/rplan.c

index 85650c2753a68514267692c612b057da35b74914..5c4c70e88b638a7690f7516362c13c3b2d770384 100644 (file)
@@ -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);
index a66b16c1f123a36d60476c45c09d1905ab717bf7..7438b66f1ec1933281ef07b8b57daa06647affb8 100644 (file)
@@ -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;
        }