From 22a0f2d67e5cb70cd416256b400e243046c8fce0 Mon Sep 17 00:00:00 2001 From: lotodore Date: Sat, 1 Sep 2007 15:23:14 +0000 Subject: [PATCH] Fixed name resolution on Windows 2000. --- src/net/win32/socket_helper.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/net/win32/socket_helper.cpp b/src/net/win32/socket_helper.cpp index b3f79ad5..f6a3e351 100644 --- a/src/net/win32/socket_helper.cpp +++ b/src/net/win32/socket_helper.cpp @@ -29,7 +29,7 @@ using namespace std; typedef int (WSAAPI * getaddrinfo_ptr_t) (const char *, const char* , const struct addrinfo *, struct addrinfo **); -typedef void (WSAAPI * freeaddrinfo_ptr_t) (struct addrinfo*); +typedef void (WSAAPI * freeaddrinfo_ptr_t) (struct addrinfo*); static wstring utf8ToWchar(const char *str) @@ -119,12 +119,15 @@ socket_resolve(const char *str, const char *port, int addrFamily, int sockType, } // If we cannot use getaddrinfo (OS older than XP), // we call the "classic" gethostbyname. - if (!useGetaddrinfo && protocol == AF_INET) + if (!useGetaddrinfo && addrFamily == AF_INET) { struct hostent *host = gethostbyname(str); if (host && host->h_addr_list) { - memcpy(addr, host->h_addr_list, host->h_length); + struct sockaddr_in *addr_in = (struct sockaddr_in *)addr; + addr_in->sin_family = AF_INET; + addr_in->sin_port = htons(atoi(port)); + memcpy(&addr_in->sin_addr, host->h_addr_list[0], host->h_length); retVal = true; } }