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