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:
Baptiste Assmann 2016-01-06 01:53:46 +01:00 committed by Willy Tarreau
parent 692c9386db
commit 382824c475

View File

@ -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);
}
}