wininet(2/10): Simplify GetAddress when using getaddrinfo

Juan Lang juan.lang at gmail.com
Thu Jul 9 13:56:53 CDT 2009


--Juan
-------------- next part --------------
From c29a4e980e6024ee580b26923156fc9bc8c5a9d9 Mon Sep 17 00:00:00 2001
From: Juan Lang <juan.lang at gmail.com>
Date: Thu, 9 Jul 2009 10:55:18 -0700
Subject: [PATCH 06/14] Simplify GetAddress when using getaddrinfo

---
 dlls/wininet/utility.c |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/dlls/wininet/utility.c b/dlls/wininet/utility.c
index 2c443bf..e2eee46 100644
--- a/dlls/wininet/utility.c
+++ b/dlls/wininet/utility.c
@@ -187,17 +187,21 @@ BOOL GetAddress(LPCWSTR lpszServerName, INTERNET_PORT nServerPort,
         TRACE("failed to get address of %s (%s)\n", debugstr_w(lpszServerName), gai_strerror(ret));
         return FALSE;
     }
-    if (*sa_len < sizeof(struct sockaddr_in))
+    if (*sa_len < res->ai_addrlen)
     {
         WARN("address too small\n");
         freeaddrinfo( res );
         return FALSE;
     }
-    *sa_len = sizeof(struct sockaddr_in);
-    memset( psa, 0, sizeof(struct sockaddr_in) );
-    memcpy( &((struct sockaddr_in *)psa)->sin_addr, &((struct sockaddr_in *)res->ai_addr)->sin_addr, sizeof(struct in_addr) );
-    ((struct sockaddr_in *)psa)->sin_family = res->ai_family;
-    ((struct sockaddr_in *)psa)->sin_port = htons(nServerPort);
+    *sa_len = res->ai_addrlen;
+    memcpy( psa, res->ai_addr, res->ai_addrlen );
+    /* Copy port */
+    switch (res->ai_family)
+    {
+    case AF_INET:
+        ((struct sockaddr_in *)psa)->sin_port = htons(nServerPort);
+        break;
+    }
 
     freeaddrinfo( res );
 #else
-- 
1.6.3.2


More information about the wine-patches mailing list