Juan Lang : winhttp: Simplify netconn_resolve when using getaddrinfo.

Alexandre Julliard julliard at winehq.org
Thu Jul 9 10:57:00 CDT 2009


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Wed Jul  8 10:39:10 2009 -0700

winhttp: Simplify netconn_resolve when using getaddrinfo.

---

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

diff --git a/dlls/winhttp/net.c b/dlls/winhttp/net.c
index f362a8b..caa83bf 100644
--- a/dlls/winhttp/net.c
+++ b/dlls/winhttp/net.c
@@ -590,17 +590,21 @@ BOOL netconn_resolve( WCHAR *hostnameW, INTERNET_PORT port, struct sockaddr *sa,
         TRACE("failed to get address of %s (%s)\n", debugstr_w(hostnameW), 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( sa, 0, sizeof(struct sockaddr_in) );
-    memcpy( &((struct sockaddr_in *)sa)->sin_addr, &((struct sockaddr_in *)res->ai_addr)->sin_addr, sizeof(struct in_addr) );
-    ((struct sockaddr_in *)sa)->sin_family = res->ai_family;
-    ((struct sockaddr_in *)sa)->sin_port = htons( port );
+    *sa_len = res->ai_addrlen;
+    memcpy( sa, res->ai_addr, res->ai_addrlen );
+    /* Copy port */
+    switch (res->ai_family)
+    {
+    case AF_INET:
+        ((struct sockaddr_in *)sa)->sin_port = htons( port );
+        break;
+    }
 
     freeaddrinfo( res );
 #else




More information about the wine-cvs mailing list