Juan Lang : winhttp: Use a helper function to set connect_t' s servername and port.

Alexandre Julliard julliard at winehq.org
Wed Jul 15 09:47:05 CDT 2009


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

Author: Juan Lang <juan.lang at gmail.com>
Date:   Tue Jul 14 13:03:26 2009 -0700

winhttp: Use a helper function to set connect_t's servername and port.

---

 dlls/winhttp/session.c |   91 ++++++++++++++++++++++++++++++++----------------
 1 files changed, 61 insertions(+), 30 deletions(-)

diff --git a/dlls/winhttp/session.c b/dlls/winhttp/session.c
index 3b5f6e6..5d2466e 100644
--- a/dlls/winhttp/session.c
+++ b/dlls/winhttp/session.c
@@ -316,6 +316,65 @@ static BOOL should_bypass_proxy(session_t *session, LPCWSTR server)
     return ret;
 }
 
+static
+BOOL set_server_for_hostname( connect_t *connect, LPCWSTR server, INTERNET_PORT port )
+{
+    session_t *session = connect->session;
+    BOOL ret = TRUE;
+
+    if (session->proxy_server && !should_bypass_proxy(session, server))
+    {
+        LPCWSTR colon;
+
+        if ((colon = strchrW( session->proxy_server, ':' )))
+        {
+            if (!connect->servername || strncmpiW( connect->servername,
+                session->proxy_server, colon - session->proxy_server - 1 ))
+            {
+                heap_free( connect->servername );
+                if (!(connect->servername = heap_alloc(
+                    (colon - session->proxy_server + 1) * sizeof(WCHAR) )))
+                {
+                    ret = FALSE;
+                    goto end;
+                }
+                memcpy( connect->servername, session->proxy_server,
+                    (colon - session->proxy_server) * sizeof(WCHAR) );
+                connect->servername[colon - session->proxy_server] = 0;
+                if (*(colon + 1))
+                    connect->serverport = atoiW( colon + 1 );
+                else
+                    connect->serverport = INTERNET_DEFAULT_HTTP_PORT;
+            }
+        }
+        else
+        {
+            if (!connect->servername || strcmpiW( connect->servername,
+                session->proxy_server ))
+            {
+                heap_free( connect->servername );
+                if (!(connect->servername = strdupW( session->proxy_server )))
+                {
+                    ret = FALSE;
+                    goto end;
+                }
+                connect->serverport = INTERNET_DEFAULT_HTTP_PORT;
+            }
+        }
+    }
+    else if (server)
+    {
+        if (!(connect->servername = strdupW( server )))
+        {
+            ret = FALSE;
+            goto end;
+        }
+        connect->serverport = port;
+    }
+end:
+    return ret;
+}
+
 /***********************************************************************
  *          WinHttpConnect (winhttp.@)
  */
@@ -363,36 +422,8 @@ HINTERNET WINAPI WinHttpConnect( HINTERNET hsession, LPCWSTR server, INTERNET_PO
     if (server && !(connect->hostname = strdupW( server ))) goto end;
     connect->hostport = port;
 
-    if (session->proxy_server && !should_bypass_proxy(session, server))
-    {
-        LPCWSTR colon;
-
-        if ((colon = strchrW( session->proxy_server, ':' )))
-        {
-            if (!(connect->servername = heap_alloc(
-                (colon - session->proxy_server + 1) * sizeof(WCHAR) )))
-                goto end;
-            memcpy( connect->servername, session->proxy_server,
-                (colon - session->proxy_server) * sizeof(WCHAR) );
-            connect->servername[colon - session->proxy_server] = 0;
-            if (*(colon + 1))
-                connect->serverport = atoiW( colon + 1 );
-            else
-                connect->serverport = INTERNET_DEFAULT_HTTP_PORT;
-        }
-        else
-        {
-            if (!(connect->servername = strdupW( session->proxy_server )))
-                goto end;
-            connect->serverport = INTERNET_DEFAULT_HTTP_PORT;
-        }
-    }
-    else if (server)
-    {
-        if (!(connect->servername = strdupW( server )))
-            goto end;
-        connect->serverport = port;
-    }
+    if (!set_server_for_hostname( connect, server, port ))
+        goto end;
 
     if (!(hconnect = alloc_handle( &connect->hdr ))) goto end;
     connect->hdr.handle = hconnect;




More information about the wine-cvs mailing list