mirror of
https://github.com/haproxy/haproxy.git
synced 2026-06-11 01:41:49 -04:00
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
This commit is contained in:
parent
692c9386db
commit
382824c475
1 changed files with 8 additions and 10 deletions
18
src/dns.c
18
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue