diff --git a/src/xpdev/sockwrap.c b/src/xpdev/sockwrap.c index 5da6f6e022dcd4db82b887dc6f6b05acb5c70f85..1fc20368ea3270da719aca6209e758eeefd71cee 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) {