mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2025-02-23 14:16:53 +00:00
BUG/MAJOR: dns: first DNS response packet not matching queried hostname may lead to a loop
The status DNS_UPD_NAME_ERROR returned by dns_get_ip_from_response and which means the queried name can't be found in the response was improperly processed (fell into the default case). This lead to a loop where HAProxy simply resend a new query as soon as it got a response for this status and in the only case where such type of response is the very first one received by the process. This should be backported into 1.6 branch
This commit is contained in:
parent
f2dd5e4159
commit
fad0318c74
11
src/server.c
11
src/server.c
@ -2620,6 +2620,17 @@ int snr_resolution_cb(struct dns_resolution *resolution, struct dns_nameserver *
|
||||
}
|
||||
goto stop_resolution;
|
||||
|
||||
case DNS_UPD_NAME_ERROR:
|
||||
/* if this is not the last expected response, we ignore it */
|
||||
if (resolution->nb_responses < nameserver->resolvers->count_nameservers)
|
||||
return 0;
|
||||
/* update resolution status to OTHER error type */
|
||||
if (resolution->status != RSLV_STATUS_OTHER) {
|
||||
resolution->status = RSLV_STATUS_OTHER;
|
||||
resolution->last_status_change = now_ms;
|
||||
}
|
||||
goto stop_resolution;
|
||||
|
||||
default:
|
||||
goto invalid;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user