]> 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)
committerGrigorii Demidov <grigorii.demidov@nic.cz>
Fri, 3 Mar 2017 09:17:06 +0000 (10:17 +0100)
lib/resolve.c

index fe55019c52c37d104d99df5b65b11075dcd02c08..ef8e580ff4ff978c65fb8577204325605931b4ad 100644 (file)
@@ -973,7 +973,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. */