diff options
author | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2013-03-05 21:46:40 +0100 |
---|---|---|
committer | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2013-03-05 21:46:40 +0100 |
commit | 469d08ec42e3454e8fe711c4c12a5fca499c9d29 (patch) | |
tree | 615fb8b0b106eef882b5505faac7bc3253fc4f03 /source | |
parent | IPv6 support: fixed IP string getting on accept() (diff) | |
download | cuberite-469d08ec42e3454e8fe711c4c12a5fca499c9d29.tar cuberite-469d08ec42e3454e8fe711c4c12a5fca499c9d29.tar.gz cuberite-469d08ec42e3454e8fe711c4c12a5fca499c9d29.tar.bz2 cuberite-469d08ec42e3454e8fe711c4c12a5fca499c9d29.tar.lz cuberite-469d08ec42e3454e8fe711c4c12a5fca499c9d29.tar.xz cuberite-469d08ec42e3454e8fe711c4c12a5fca499c9d29.tar.zst cuberite-469d08ec42e3454e8fe711c4c12a5fca499c9d29.zip |
Diffstat (limited to '')
-rw-r--r-- | source/Globals.h | 3 | ||||
-rw-r--r-- | source/OSSupport/Socket.cpp | 20 |
2 files changed, 20 insertions, 3 deletions
diff --git a/source/Globals.h b/source/Globals.h index 038b173cf..c9589bfc5 100644 --- a/source/Globals.h +++ b/source/Globals.h @@ -92,6 +92,9 @@ typedef unsigned short UInt16; // OS-dependent stuff: #ifdef _WIN32 #define WIN32_LEAN_AND_MEAN + + #define _WIN32_WINNT 0x501 // We want to target WinXP and higher + #include <Windows.h> #include <winsock2.h> #include <Ws2tcpip.h> // IPv6 stuff diff --git a/source/OSSupport/Socket.cpp b/source/OSSupport/Socket.cpp index efc20284f..b4ac62993 100644 --- a/source/OSSupport/Socket.cpp +++ b/source/OSSupport/Socket.cpp @@ -293,9 +293,23 @@ cSocket cSocket::AcceptIPv6(void) // Get IP in string form: if (SClient.IsValid()) { - char buffer[INET6_ADDRSTRLEN]; - inet_ntop(AF_INET6, &(from.sin6_addr), buffer, sizeof(buffer)); - SClient.m_IPString.assign(buffer); + #if defined(_WIN32) + // Windows XP doesn't have inet_ntop, so we need to improvise: + Printf(SClient.m_IPString, "%x:%x:%x:%x:%x:%x:%x:%x", + from.sin6_addr.u.Word[0], + from.sin6_addr.u.Word[1], + from.sin6_addr.u.Word[2], + from.sin6_addr.u.Word[3], + from.sin6_addr.u.Word[4], + from.sin6_addr.u.Word[5], + from.sin6_addr.u.Word[6], + from.sin6_addr.u.Word[7] + ); + #else + char buffer[INET6_ADDRSTRLEN]; + inet_ntop(AF_INET6, &(from.sin6_addr), buffer, sizeof(buffer)); + SClient.m_IPString.assign(buffer); + #endif // _WIN32 } return SClient; } |