mirror of
https://github.com/zeromq/libzmq.git
synced 2024-12-12 18:40:27 +01:00
Merge pull request #1888 from bluca/ipv6_downgrade
Problem: zmq_bind IPv4 fallback still tries IPv6
This commit is contained in:
commit
23d08c2024
@ -271,6 +271,20 @@ int zmq::tcp_connecter_t::open ()
|
||||
|
||||
// Create the socket.
|
||||
s = open_socket (tcp_addr->family (), SOCK_STREAM, IPPROTO_TCP);
|
||||
|
||||
// IPv6 address family not supported, try automatic downgrade to IPv4.
|
||||
if (s == -1 && tcp_addr->family () == AF_INET6
|
||||
&& errno == EAFNOSUPPORT
|
||||
&& options.ipv6) {
|
||||
rc = addr->resolved.tcp_addr->resolve (
|
||||
addr->address.c_str (), false, false);
|
||||
if (rc != 0) {
|
||||
LIBZMQ_DELETE(addr->resolved.tcp_addr);
|
||||
return -1;
|
||||
}
|
||||
s = open_socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
}
|
||||
|
||||
#ifdef ZMQ_HAVE_WINDOWS
|
||||
if (s == INVALID_SOCKET) {
|
||||
errno = wsa_error_to_errno (WSAGetLastError ());
|
||||
|
@ -178,19 +178,15 @@ int zmq::tcp_listener_t::set_address (const char *addr_)
|
||||
|
||||
// Create a listening socket.
|
||||
s = open_socket (address.family (), SOCK_STREAM, IPPROTO_TCP);
|
||||
#ifdef ZMQ_HAVE_WINDOWS
|
||||
if (s == INVALID_SOCKET)
|
||||
errno = wsa_error_to_errno (WSAGetLastError ());
|
||||
#endif
|
||||
|
||||
// IPv6 address family not supported, try automatic downgrade to IPv4.
|
||||
if (address.family () == AF_INET6
|
||||
if (s == -1 && address.family () == AF_INET6
|
||||
&& errno == EAFNOSUPPORT
|
||||
&& options.ipv6) {
|
||||
rc = address.resolve (addr_, true, true);
|
||||
rc = address.resolve (addr_, true, false);
|
||||
if (rc != 0)
|
||||
return rc;
|
||||
s = ::socket (address.family (), SOCK_STREAM, IPPROTO_TCP);
|
||||
s = open_socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
|
||||
}
|
||||
|
||||
#ifdef ZMQ_HAVE_WINDOWS
|
||||
|
Loading…
Reference in New Issue
Block a user