From 469d08ec42e3454e8fe711c4c12a5fca499c9d29 Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Tue, 5 Mar 2013 20:46:40 +0000 Subject: IPv6: Windows XP doesn't have the inet_pton() function, resorting to custom-formatting the address git-svn-id: http://mc-server.googlecode.com/svn/trunk@1257 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/OSSupport/Socket.cpp | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) (limited to 'source/OSSupport') 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; } -- cgit v1.2.3