From: Marek VavruĊĦa Date: Tue, 1 May 2018 06:20:27 +0000 (-0700) Subject: daemon/worker: always try multiple upstreams even if sending fails X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ceb8743f6c44f8b615711a396f7d3ade83436acc;p=thirdparty%2Fknot-resolver.git daemon/worker: always try multiple upstreams even if sending fails Before no other upstreams were tried if qr_task_send or kr_resolve_checkout failed, which isn't correct, as it doesn't allow blocking of outbound requests. --- diff --git a/daemon/worker.c b/daemon/worker.c index 983d133a2..1422b7515 100644 --- a/daemon/worker.c +++ b/daemon/worker.c @@ -1389,9 +1389,11 @@ static uv_handle_t *retransmit(struct qr_task *task) if (!choice) { return ret; } - /* Checkout answer before sending it */ + + /* Checkout query before sending it */ struct request_ctx *ctx = task->ctx; if (kr_resolve_checkout(&ctx->req, NULL, (struct sockaddr *)choice, SOCK_DGRAM, task->pktbuf) != 0) { + task->addrlist_turn = (task->addrlist_turn + 1) % task->addrlist_count; /* Round robin */ return ret; } ret = ioreq_spawn(task, SOCK_DGRAM, choice->sin6_family); @@ -1411,6 +1413,7 @@ static uv_handle_t *retransmit(struct qr_task *task) ret = NULL; } } + return ret; }