Module: wine Branch: master Commit: de12987d7f61bc21c6345df7cbaeafbeeaa09d23 URL: http://source.winehq.org/git/wine.git/?a=commit;h=de12987d7f61bc21c6345df7cb...
Author: Juan Lang juan.lang@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;