]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MAJOR: dns: first DNS response packet not matching queried hostname may lead...
authorBaptiste Assmann <bedis9@gmail.com>
Wed, 28 Oct 2015 01:03:32 +0000 (02:03 +0100)
committerWilly Tarreau <w@1wt.eu>
Fri, 30 Oct 2015 11:38:14 +0000 (12:38 +0100)
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

index dcc5961051498213cf0807ebbf0ccef4c508c949..c92623d481e9c4d59ef66af12bcc75c5a5acc195 100644 (file)
@@ -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;