Jacek Caban : wininet: Use GetAddrInfoW in GetAddress.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Feb 16 10:01:20 CST 2015


Module: wine
Branch: master
Commit: 100bd11ae5e65bea9cdaecf4ce75a2aa8ba3ac2e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=100bd11ae5e65bea9cdaecf4ce75a2aa8ba3ac2e

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Feb 16 11:16:39 2015 +0100

wininet: Use GetAddrInfoW in GetAddress.

---

 dlls/wininet/utility.c | 31 +++++++++++--------------------
 1 file changed, 11 insertions(+), 20 deletions(-)

diff --git a/dlls/wininet/utility.c b/dlls/wininet/utility.c
index ec82779..16447e4 100644
--- a/dlls/wininet/utility.c
+++ b/dlls/wininet/utility.c
@@ -125,20 +125,12 @@ time_t ConvertTimeString(LPCWSTR asctime)
 }
 
 
-BOOL GetAddress(LPCWSTR lpszServerName, INTERNET_PORT nServerPort,
-	struct sockaddr *psa, socklen_t *sa_len)
+BOOL GetAddress(const WCHAR *name, INTERNET_PORT port, struct sockaddr *psa, socklen_t *sa_len)
 {
-    struct addrinfo *res, hints;
-    char *name;
-    int sz;
+    ADDRINFOW *res, hints;
     int ret;
 
-    TRACE("%s\n", debugstr_w(lpszServerName));
-
-    sz = WideCharToMultiByte( CP_UNIXCP, 0, lpszServerName, -1, NULL, 0, NULL, NULL );
-    if (!(name = heap_alloc(sz + 1))) return FALSE;
-    WideCharToMultiByte( CP_UNIXCP, 0, lpszServerName, -1, name, sz, NULL, NULL );
-    name[sz] = 0;
+    TRACE("%s\n", debugstr_w(name));
 
     memset( &hints, 0, sizeof(hints) );
     /* Prefer IPv4 to IPv6 addresses, since some servers do not listen on
@@ -146,23 +138,22 @@ BOOL GetAddress(LPCWSTR lpszServerName, INTERNET_PORT nServerPort,
      */
     hints.ai_family = AF_INET;
 
-    ret = getaddrinfo( name, NULL, &hints, &res );
+    ret = GetAddrInfoW(name, NULL, &hints, &res);
     if (ret != 0)
     {
-        TRACE("failed to get IPv4 address of %s, retrying with IPv6\n", debugstr_w(lpszServerName));
+        TRACE("failed to get IPv4 address of %s, retrying with IPv6\n", debugstr_w(name));
         hints.ai_family = AF_INET6;
-        ret = getaddrinfo( name, NULL, &hints, &res );
+        ret = GetAddrInfoW(name, NULL, &hints, &res);
     }
-    heap_free( name );
     if (ret != 0)
     {
-        TRACE("failed to get address of %s\n", debugstr_w(lpszServerName));
+        TRACE("failed to get address of %s\n", debugstr_w(name));
         return FALSE;
     }
     if (*sa_len < res->ai_addrlen)
     {
         WARN("address too small\n");
-        freeaddrinfo( res );
+        FreeAddrInfoW(res);
         return FALSE;
     }
     *sa_len = res->ai_addrlen;
@@ -171,14 +162,14 @@ BOOL GetAddress(LPCWSTR lpszServerName, INTERNET_PORT nServerPort,
     switch (res->ai_family)
     {
     case AF_INET:
-        ((struct sockaddr_in *)psa)->sin_port = htons(nServerPort);
+        ((struct sockaddr_in *)psa)->sin_port = htons(port);
         break;
     case AF_INET6:
-        ((struct sockaddr_in6 *)psa)->sin6_port = htons(nServerPort);
+        ((struct sockaddr_in6 *)psa)->sin6_port = htons(port);
         break;
     }
 
-    freeaddrinfo( res );
+    FreeAddrInfoW(res);
     return TRUE;
 }
 




More information about the wine-cvs mailing list