Skip to content
Snippets Groups Projects
Commit f89bbf0f authored by deuce's avatar deuce
Browse files

Use getnameinfo() instead of WSAAddressToString 'cause it's more better.

parent c41cb965
No related branches found
No related tags found
No related merge requests found
...@@ -416,29 +416,8 @@ union xp_sockaddr *inet_ptoaddr(char *addr_str, union xp_sockaddr *addr, size_t ...@@ -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) const char *inet_addrtop(union xp_sockaddr *addr, char *dest, size_t size)
{ {
#ifdef _WIN32 #ifdef _WIN32
static INT (WSAAPI *a2s)(LPSOCKADDR, DWORD, LPWSAPROTOCOL_INFO, LPTSTR, LPDWORD)=NULL; if(getnameinfo(addr, xp_sockaddr_len(addr), dest, size, NULL, 0, NI_NUMERICHOST))
static BOOL searched=FALSE; strncpy(dest, "<Unable to convert address>", size);
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;
return dest; return dest;
#else #else
switch(addr->addr.sa_family) { switch(addr->addr.sa_family) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment