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.
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);
ret = NULL;
}
}
+
return ret;
}