]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
lib/resolve: deferred answer processing was fixed
authorGrigorii Demidov <grigorii.demidov@nic.cz>
Fri, 3 Mar 2017 09:17:06 +0000 (10:17 +0100)
committerOndřej Surý <ondrej@sury.org>
Mon, 6 Mar 2017 10:18:36 +0000 (11:18 +0100)
lib/resolve.c

index c6732b23acdb21ebf46d8c4666ef4e2331f0cb07..1e729ed90157be8fcbef9f59dd9fbc47e1e9728e 100644 (file)
@@ -975,7 +975,10 @@ int kr_resolve_produce(struct kr_request *request, struct sockaddr **dst, int *t
                set_yield(&request->answ_selected, qry->uid, false);
                set_yield(&request->auth_selected, qry->uid, false);
                RESUME_LAYERS(layer_id(request, pickle->api), request, qry, consume, pickle->pkt);
-               qry->deferred = pickle->next;
+               if (request->state != KR_STATE_YIELD) {
+                       /* No new deferred answers, take the next */
+                       qry->deferred = pickle->next;
+               }
        } else {
                /* Caller is interested in always tracking a zone cut, even if the answer is cached
                 * this is normally not required, and incurrs another cache lookups for cached answer. */