On Wed, Oct 28, 2015 at 6:39 PM, Ben Tisdall <ben.tisd...@photobox.com> wrote: > On Wed, Oct 28, 2015 at 6:28 PM, Ben Tisdall <ben.tisd...@photobox.com> wrote: >> On Wed, Oct 28, 2015 at 6:00 PM, Baptiste <bed...@gmail.com> wrote: >>> >>> Ben, could you apply the patch below instead of 0001: >>> >>> [snip] > > That patch is proving problematic to apply, to save me guessing can > you provide it as an attachment please.
Hi Ben, Here you go. Baptiste
From c96ec88f274689f5dd5b7efd403fccbc8837e748 Mon Sep 17 00:00:00 2001 From: Baptiste Assmann <bed...@gmail.com> Date: Wed, 28 Oct 2015 02:03:32 +0100 Subject: [PATCH 1/2] 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 --- src/server.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/server.c b/src/server.c index dcc5961..c92623d 100644 --- a/src/server.c +++ b/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; -- 2.5.0