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 a468700..b5f4bf4 100644
--- a/src/standard.c
+++ b/src/standard.c
@@ -665,7 +665,7 @@
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) {