From: Grigorii Demidov Date: Fri, 3 Mar 2017 09:17:06 +0000 (+0100) Subject: lib/resolve: deferred answer processing was fixed X-Git-Tag: v1.2.4~2^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2da2b7fbe83b2edbc46da9b001693b67ee4f7693;p=thirdparty%2Fknot-resolver.git lib/resolve: deferred answer processing was fixed --- diff --git a/lib/resolve.c b/lib/resolve.c index c6732b23a..1e729ed90 100644 --- a/lib/resolve.c +++ b/lib/resolve.c @@ -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. */