@@ -488,9 +488,8 @@
sig_info = &sigrec;
}
- /* try numeric ipv6 addr first */
+ /* try numeric ip addr first */
CLEAR(hints);
- hints.ai_family = ai_family;
hints.ai_flags = AI_NUMERICHOST;
if (flags & GETADDR_PASSIVE)
@@ -518,6 +517,10 @@
const char *fmt;
int level = 0;
+ /* this is not a numeric IP, therefore force resolution using the
+ * provided ai_family */
+ hints.ai_family = ai_family;
+
if (hostname && (flags & GETADDR_RANDOMIZE))
{
hostname = hostname_randomize(hostname, &gc);
@@ -1716,6 +1719,10 @@
sock->local_host, sock->local_port,
gai_strerror(status));
}
+
+ /* the resolved 'local entry' might have a different family than what
+ * was globally configured */
+ sock->info.af = sock->info.lsa->bind_local->ai_family;
}
gc_free(&gc);