Module: wine Branch: master Commit: 51e54a8b75d8e9ce8e282633ff8dde13c3119669 URL: http://source.winehq.org/git/wine.git/?a=commit;h=51e54a8b75d8e9ce8e282633ff...
Author: Juan Lang juan.lang@gmail.com Date: Tue Jul 14 13:01:26 2009 -0700
winhttp: Support getting the default proxy settings from the http_proxy environment variable.
---
dlls/winhttp/session.c | 22 ++++++++++++++++++++++ 1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/dlls/winhttp/session.c b/dlls/winhttp/session.c index 17a0a5f..8a9a039 100644 --- a/dlls/winhttp/session.c +++ b/dlls/winhttp/session.c @@ -21,6 +21,7 @@ #include "wine/debug.h"
#include <stdarg.h> +#include <stdlib.h>
#include "windef.h" #include "winbase.h" @@ -686,6 +687,7 @@ BOOL WINAPI WinHttpGetDefaultProxyConfiguration( WINHTTP_PROXY_INFO *info ) LONG l; HKEY key; BOOL direct = TRUE; + char *envproxy;
TRACE("%p\n", info);
@@ -749,6 +751,9 @@ BOOL WINAPI WinHttpGetDefaultProxyConfiguration( WINHTTP_PROXY_INFO *info ) direct = FALSE; info->dwAccessType = WINHTTP_ACCESS_TYPE_NAMED_PROXY; + TRACE("http proxy (from registry) = %s, bypass = %s\n", + debugstr_w(info->lpszProxy), + debugstr_w(info->lpszProxyBypass)); } } } @@ -757,6 +762,23 @@ BOOL WINAPI WinHttpGetDefaultProxyConfiguration( WINHTTP_PROXY_INFO *info ) } RegCloseKey( key ); } + else if ((envproxy = getenv( "http_proxy" ))) + { + WCHAR *envproxyW; + int len; + + len = MultiByteToWideChar( CP_UNIXCP, 0, envproxy, -1, NULL, 0 ); + if ((envproxyW = GlobalAlloc( 0, len * sizeof(WCHAR)))) + { + MultiByteToWideChar( CP_UNIXCP, 0, envproxy, -1, envproxyW, len ); + direct = FALSE; + info->dwAccessType = WINHTTP_ACCESS_TYPE_NAMED_PROXY; + info->lpszProxy = envproxyW; + info->lpszProxyBypass = NULL; + TRACE("http proxy (from environment) = %s\n", + debugstr_w(info->lpszProxy)); + } + } if (direct) { info->dwAccessType = WINHTTP_ACCESS_TYPE_NO_PROXY;