From: Dmitry Sivachenko Date: Thu, 1 Oct 2015 23:01:58 +0000 (+0200) Subject: BUG/MEDIUM: str2ip: make getaddrinfo() consider local address selection policy X-Git-Tag: v1.6-dev7~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=eab7f3996f737177c1af66b9f2bec779f7bb5f05;p=thirdparty%2Fhaproxy.git BUG/MEDIUM: str2ip: make getaddrinfo() consider local address selection policy When first parameter to getaddrinfo() is not NULL (it is always not NULL in str2ip()), on Linux AI_PASSIVE value for ai_flags is ignored. On FreeBSD, when AI_PASSIVE is specified and hostname parameter is not NULL, getaddrinfo() ignores local address selection policy, always returning AAAA record. Pass zero ai_flags to behave correctly on FreeBSD, this change should be no-op for Linux. This fix should be backported to 1.5 as well, after some observation period. --- diff --git a/src/standard.c b/src/standard.c index a468700b19..b5f4bf4046 100644 --- a/src/standard.c +++ b/src/standard.c @@ -665,7 +665,7 @@ struct sockaddr_storage *str2ip2(const char *str, struct sockaddr_storage *sa, i memset(&hints, 0, sizeof(hints)); hints.ai_family = sa->ss_family ? sa->ss_family : AF_UNSPEC; hints.ai_socktype = SOCK_DGRAM; - hints.ai_flags = AI_PASSIVE; + hints.ai_flags = 0; hints.ai_protocol = 0; if (getaddrinfo(str, NULL, &hints, &result) == 0) {