From f89bbf0f8b151e55139105b15ea3822572fae00f Mon Sep 17 00:00:00 2001
From: deuce <>
Date: Sat, 8 Feb 2014 03:21:41 +0000
Subject: [PATCH] Use getnameinfo() instead of WSAAddressToString 'cause it's
 more better.

---
 src/xpdev/sockwrap.c | 25 ++-----------------------
 1 file changed, 2 insertions(+), 23 deletions(-)

diff --git a/src/xpdev/sockwrap.c b/src/xpdev/sockwrap.c
index 5da6f6e022..1fc20368ea 100644
--- a/src/xpdev/sockwrap.c
+++ b/src/xpdev/sockwrap.c
@@ -416,29 +416,8 @@ union xp_sockaddr *inet_ptoaddr(char *addr_str, union xp_sockaddr *addr, size_t
 const char *inet_addrtop(union xp_sockaddr *addr, char *dest, size_t size)
 {
 #ifdef _WIN32
-	static INT (WSAAPI *a2s)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFO, LPTSTR, LPDWORD)=NULL;
-	static BOOL searched=FALSE;
-
-	if(!searched) {
-		HMODULE hMod = LoadLibrary("ws2_32.dll");
-
-		searched = TRUE;
-		if(hMod)
-			a2s=(INT (WSAAPI *)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFO, LPTSTR, LPDWORD))GetProcAddress(hMod, "WSAAddressToStringA");
-	}
-
-	if(a2s) {
-		DWORD	dsize=size;
-
-		if(a2s(&addr->addr, SOCK_MAXADDRLEN, NULL, dest, &dsize)==SOCKET_ERROR)
-			return NULL;
-		return dest;
-	}
-	if(addr->addr.sa_family != AF_INET)
-		strncpy(dest, "<Address Family Not Supported>", size);
-	else
-		strncpy(dest, inet_ntoa(addr->in.sin_addr), size);
-	dest[size-1]=0;
+	if(getnameinfo(addr, xp_sockaddr_len(addr), dest, size, NULL, 0, NI_NUMERICHOST))
+		strncpy(dest, "<Unable to convert address>", size);
 	return dest;
 #else
 	switch(addr->addr.sa_family) {
-- 
GitLab