From: Baptiste Assmann Date: Wed, 6 Jan 2016 00:53:46 +0000 (+0100) Subject: BUG/MINOR: dns: inapropriate way out after a resolution timeout X-Git-Tag: v1.7-dev3~52 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=382824c475e921f065c4e1a339a2577cbac21808;p=thirdparty%2Fhaproxy.git BUG/MINOR: dns: inapropriate way out after a resolution timeout A bug leading HAProxy to stop DNS resolution when multiple servers are configured and one is in timeout, the request is not resent. Current code fix this issue. backport status: 1.6 and above --- diff --git a/src/dns.c b/src/dns.c index 1ce786dc5b..97f9f0ac0d 100644 --- a/src/dns.c +++ b/src/dns.c @@ -1188,21 +1188,19 @@ struct task *dns_process_resolve(struct task *t) /* notify the result to the requester */ resolution->requester_error_cb(resolution, DNS_RESP_TIMEOUT); + goto out; } resolution->try -= 1; - /* check current resolution status */ - if (resolution->step == RSLV_STEP_RUNNING) { - /* resend the DNS query */ - dns_send_query(resolution); + /* resend the DNS query */ + dns_send_query(resolution); - /* check if we have more than one resolution in the list */ - if (dns_check_resolution_queue(resolvers) > 1) { - /* move the rsolution to the end of the list */ - LIST_DEL(&resolution->list); - LIST_ADDQ(&resolvers->curr_resolution, &resolution->list); - } + /* check if we have more than one resolution in the list */ + if (dns_check_resolution_queue(resolvers) > 1) { + /* move the rsolution to the end of the list */ + LIST_DEL(&resolution->list); + LIST_ADDQ(&resolvers->curr_resolution, &resolution->list); } }