Commit 64732aec authored by Ian Barber's avatar Ian Barber

Merge pull request #293 from hurtonm/fix_getaddrinfo_for_ipv6_on_freebsd

Don't set the AI_V4MAPPED flag on FreeBSD
parents dc4d61f3 c2e9997a
...@@ -277,11 +277,12 @@ int zmq::tcp_address_t::resolve_interface (char const *interface_, ...@@ -277,11 +277,12 @@ int zmq::tcp_address_t::resolve_interface (char const *interface_,
// service-name irregularity due to indeterminate socktype. // service-name irregularity due to indeterminate socktype.
req.ai_flags = AI_PASSIVE | AI_NUMERICHOST; req.ai_flags = AI_PASSIVE | AI_NUMERICHOST;
#ifndef ZMQ_HAVE_WINDOWS #if defined AI_V4MAPPED && !defined ZMQ_HAVE_FREEBSD
// Windows by default maps IPv4 addresses into IPv6. In this API we only // In this API we only require IPv4-mapped addresses when
// require IPv4-mapped addresses when no native IPv6 interfaces are // no native IPv6 interfaces are available (~AI_ALL).
// available (~AI_ALL). This saves an additional DNS roundtrip for IPv4 // This saves an additional DNS roundtrip for IPv4 addresses.
// addresses. // Note: While the AI_V4MAPPED flag is defined on FreeBSD system,
// it is not supported here. See libzmq issue #331.
if (req.ai_family == AF_INET6) if (req.ai_family == AF_INET6)
req.ai_flags |= AI_V4MAPPED; req.ai_flags |= AI_V4MAPPED;
#endif #endif
...@@ -322,11 +323,13 @@ int zmq::tcp_address_t::resolve_hostname (const char *hostname_, bool ipv4only_) ...@@ -322,11 +323,13 @@ int zmq::tcp_address_t::resolve_hostname (const char *hostname_, bool ipv4only_)
// Need to choose one to avoid duplicate results from getaddrinfo() - this // Need to choose one to avoid duplicate results from getaddrinfo() - this
// doesn't really matter, since it's not included in the addr-output. // doesn't really matter, since it's not included in the addr-output.
req.ai_socktype = SOCK_STREAM; req.ai_socktype = SOCK_STREAM;
#ifndef ZMQ_HAVE_WINDOWS #if defined AI_V4MAPPED && !defined ZMQ_HAVE_FREEBSD
// Windows by default maps IPv4 addresses into IPv6. In this API we only // In this API we only require IPv4-mapped addresses when
// require IPv4-mapped addresses when no native IPv6 interfaces are // no native IPv6 interfaces are available.
// available. This saves an additional DNS roundtrip for IPv4 addresses. // This saves an additional DNS roundtrip for IPv4 addresses.
// Note: While the AI_V4MAPPED flag is defined on FreeBSD system,
// it is not supported here. See libzmq issue #331.
if (req.ai_family == AF_INET6) if (req.ai_family == AF_INET6)
req.ai_flags |= AI_V4MAPPED; req.ai_flags |= AI_V4MAPPED;
#endif #endif
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment