From 1c54ce37b343bda66d25faaa970a5414546cdd92 Mon Sep 17 00:00:00 2001 From: Steven McCoy Date: Mon, 8 Aug 2011 16:07:54 +0200 Subject: tcp_connecter disables IPV6_IPV6ONLY if needed. Signed-off-by: Steven McCoy Signed-off-by: Martin Sustrik --- src/tcp_connecter.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'src/tcp_connecter.cpp') diff --git a/src/tcp_connecter.cpp b/src/tcp_connecter.cpp index 6badaea..f950896 100644 --- a/src/tcp_connecter.cpp +++ b/src/tcp_connecter.cpp @@ -198,6 +198,24 @@ int zmq::tcp_connecter_t::open () return -1; #endif + // Enable IPv4-mapping of addresses in case it is disabled by default. +#ifdef IPV6_V6ONLY + if (addr.ss_family == AF_INET6) { +#if ZMQ_HAVE_WINDOWS + DWORD flag = 0; +#else + int flag = 0; +#endif + int rc = setsockopt (s, IPPROTO_IPV6, IPV6_V6ONLY, + (const char*) &flag, sizeof (flag)); +#ifdef ZMQ_HAVE_WINDOWS + wsa_assert (rc != SOCKET_ERROR); +#else + errno_assert (rc == 0); +#endif + } +#endif + // Set the socket to non-blocking mode so that we get async connect(). unblock_socket (s); -- cgit v1.2.3