winhttp(3/5): Convert connect_t's address type from a struct sockaddr_in to a struct sockaddr_storage

Juan Lang juan.lang at gmail.com
Wed Jul 8 12:43:59 CDT 2009


--Juan
-------------- next part --------------
From 6c57129189e404b5e438f1779827cc33f0c5be02 Mon Sep 17 00:00:00 2001
From: Juan Lang <juan.lang at gmail.com>
Date: Wed, 8 Jul 2009 10:39:37 -0700
Subject: [PATCH 3/5] Convert connect_t's address type from a struct sockaddr_in to a struct sockaddr_storage

---
 dlls/winhttp/request.c         |   16 +++++++++++++---
 dlls/winhttp/winhttp_private.h |    2 +-
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c
index f088c40..d9147d3 100644
--- a/dlls/winhttp/request.c
+++ b/dlls/winhttp/request.c
@@ -713,6 +713,7 @@ BOOL WINAPI WinHttpQueryHeaders( HINTERNET hrequest, DWORD level, LPCWSTR name,
 static BOOL open_connection( request_t *request )
 {
     connect_t *connect;
+    const void *addr;
     char address[32];
     WCHAR *addressW;
     INTERNET_PORT port;
@@ -727,16 +728,25 @@ static BOOL open_connection( request_t *request )
 
     slen = sizeof(connect->sockaddr);
     if (!netconn_resolve( connect->servername, port, (struct sockaddr *)&connect->sockaddr, &slen )) return FALSE;
-    inet_ntop( connect->sockaddr.sin_family, &connect->sockaddr.sin_addr, address, sizeof(address) );
+    switch (connect->sockaddr.ss_family)
+    {
+    case AF_INET:
+        addr = &((struct sockaddr_in *)&connect->sockaddr)->sin_addr;
+        break;
+    default:
+        WARN("unsupported address family %d\n", connect->sockaddr.ss_family);
+        return FALSE;
+    }
+    inet_ntop( connect->sockaddr.ss_family, addr, address, sizeof(address) );
     addressW = strdupAW( address );
 
     send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_NAME_RESOLVED, addressW, strlenW(addressW) + 1 );
 
-    TRACE("connecting to %s:%u\n", address, ntohs(connect->sockaddr.sin_port));
+    TRACE("connecting to %s:%u\n", address, port);
 
     send_callback( &request->hdr, WINHTTP_CALLBACK_STATUS_CONNECTING_TO_SERVER, addressW, 0 );
 
-    if (!netconn_create( &request->netconn, connect->sockaddr.sin_family, SOCK_STREAM, 0 ))
+    if (!netconn_create( &request->netconn, connect->sockaddr.ss_family, SOCK_STREAM, 0 ))
     {
         heap_free( addressW );
         return FALSE;
diff --git a/dlls/winhttp/winhttp_private.h b/dlls/winhttp/winhttp_private.h
index 750acf5..2143953 100644
--- a/dlls/winhttp/winhttp_private.h
+++ b/dlls/winhttp/winhttp_private.h
@@ -110,7 +110,7 @@ typedef struct
     LPWSTR password;
     INTERNET_PORT hostport;
     INTERNET_PORT serverport;
-    struct sockaddr_in sockaddr;
+    struct sockaddr_storage sockaddr;
 } connect_t;
 
 typedef struct
-- 
1.6.3.2


More information about the wine-patches mailing list