mirror of
https://git.haproxy.org/git/haproxy.git/
synced 2026-05-05 04:56:10 +02: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
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…
x
Reference in New Issue
Block a user