From dd76132a92443b372b46821a898646c37e984eab Mon Sep 17 00:00:00 2001 From: Sara Dickinson Date: Fri, 17 Mar 2017 17:16:14 +0000 Subject: [PATCH] Implement round robin for UDP. Not sure this is the best option though. Noticed it results in more timeouts if one resolver isn't responding because it is retried more frequently. Willem - please review. --- src/stub.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/stub.c b/src/stub.c index 3a600c90..6931e418 100644 --- a/src/stub.c +++ b/src/stub.c @@ -1370,7 +1370,13 @@ stub_udp_read_cb(void *userarg) return; } netreq->response_len = read; - dnsreq->upstreams->current_udp = 0; + if (!dnsreq->context->round_robin_upstreams) + dnsreq->upstreams->current_udp = 0; + else { + dnsreq->upstreams->current_udp+=GETDNS_UPSTREAM_TRANSPORTS; + if (dnsreq->upstreams->current_udp >= dnsreq->upstreams->count) + dnsreq->upstreams->current_udp = 0; + } netreq->debug_end_time = _getdns_get_time_as_uintt64(); netreq->state = NET_REQ_FINISHED; upstream->udp_responses++;