diff options
Diffstat (limited to 'src/lib/arch/win32/ArchNetworkWinsock.cpp')
| -rw-r--r-- | src/lib/arch/win32/ArchNetworkWinsock.cpp | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/lib/arch/win32/ArchNetworkWinsock.cpp b/src/lib/arch/win32/ArchNetworkWinsock.cpp index 722c4c5..4bc61d8 100644 --- a/src/lib/arch/win32/ArchNetworkWinsock.cpp +++ b/src/lib/arch/win32/ArchNetworkWinsock.cpp @@ -213,10 +213,10 @@ ArchNetworkWinsock::newSocket(EAddressFamily family, ESocketType type) } try { setBlockingOnSocket(fd, false); - BOOL flag = 0; - int size = sizeof(flag); - if (setsockopt_winsock(fd, IPPROTO_IPV6, IPV6_V6ONLY, &flag, size) == SOCKET_ERROR) { - throwError(getsockerror_winsock()); + if (family == kINET6) { + int flag = 0; + if (setsockopt_winsock(fd, IPPROTO_IPV6, IPV6_V6ONLY, &flag, sizeof(flag)) == SOCKET_ERROR) + throwError(getsockerror_winsock()); } } catch (...) { @@ -685,8 +685,8 @@ ArchNetworkWinsock::newAnyAddr(EAddressFamily family) case kINET: { addr = ArchNetAddressImpl::alloc(sizeof(struct sockaddr_in)); auto* ipAddr = TYPED_ADDR(struct sockaddr_in, addr); + memset(ipAddr, 0, sizeof(struct sockaddr_in)); ipAddr->sin_family = AF_INET; - ipAddr->sin_port = 0; ipAddr->sin_addr.s_addr = INADDR_ANY; break; } @@ -694,8 +694,8 @@ ArchNetworkWinsock::newAnyAddr(EAddressFamily family) case kINET6: { addr = ArchNetAddressImpl::alloc(sizeof(struct sockaddr_in6)); auto* ipAddr = TYPED_ADDR(struct sockaddr_in6, addr); + memset(ipAddr, 0, sizeof(struct sockaddr_in6)); ipAddr->sin6_family = AF_INET6; - ipAddr->sin6_port = 0; memcpy(&ipAddr->sin6_addr, &in6addr_any, sizeof(in6addr_any)); break; } |
