OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/proxy/proxy_resolver_winhttp.h" | 5 #include "net/proxy/proxy_resolver_winhttp.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <winhttp.h> | 8 #include <winhttp.h> |
9 | 9 |
10 #include "base/histogram.h" | 10 #include "base/histogram.h" |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
85 | 85 |
86 // If we have been given an empty PAC url, then use auto-detection. | 86 // If we have been given an empty PAC url, then use auto-detection. |
87 // | 87 // |
88 // NOTE: We just use DNS-based auto-detection here like Firefox. We do this | 88 // NOTE: We just use DNS-based auto-detection here like Firefox. We do this |
89 // to avoid WinHTTP's auto-detection code, which while more featureful (it | 89 // to avoid WinHTTP's auto-detection code, which while more featureful (it |
90 // supports DHCP based auto-detection) also appears to have issues. | 90 // supports DHCP based auto-detection) also appears to have issues. |
91 // | 91 // |
92 WINHTTP_AUTOPROXY_OPTIONS options = {0}; | 92 WINHTTP_AUTOPROXY_OPTIONS options = {0}; |
93 options.fAutoLogonIfChallenged = TRUE; | 93 options.fAutoLogonIfChallenged = TRUE; |
94 options.dwFlags = WINHTTP_AUTOPROXY_CONFIG_URL; | 94 options.dwFlags = WINHTTP_AUTOPROXY_CONFIG_URL; |
| 95 std::wstring pac_url_wide = ASCIIToWide(pac_url); |
95 options.lpszAutoConfigUrl = | 96 options.lpszAutoConfigUrl = |
96 pac_url.empty() ? L"http://wpad/wpad.dat" : ASCIIToWide(pac_url).c_str(); | 97 pac_url_wide.empty() ? L"http://wpad/wpad.dat" : pac_url_wide.c_str(); |
97 | 98 |
98 WINHTTP_PROXY_INFO info = {0}; | 99 WINHTTP_PROXY_INFO info = {0}; |
99 DCHECK(session_handle_); | 100 DCHECK(session_handle_); |
100 if (!CallWinHttpGetProxyForUrl( | 101 if (!CallWinHttpGetProxyForUrl( |
101 session_handle_, ASCIIToWide(query_url).c_str(), &options, &info)) { | 102 session_handle_, ASCIIToWide(query_url).c_str(), &options, &info)) { |
102 DWORD error = GetLastError(); | 103 DWORD error = GetLastError(); |
103 LOG(ERROR) << "WinHttpGetProxyForUrl failed: " << error; | 104 LOG(ERROR) << "WinHttpGetProxyForUrl failed: " << error; |
104 | 105 |
105 // If we got here because of RPC timeout during out of process PAC | 106 // If we got here because of RPC timeout during out of process PAC |
106 // resolution, no further requests on this session are going to work. | 107 // resolution, no further requests on this session are going to work. |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
152 | 153 |
153 void ProxyResolverWinHttp::CloseWinHttpSession() { | 154 void ProxyResolverWinHttp::CloseWinHttpSession() { |
154 if (session_handle_) { | 155 if (session_handle_) { |
155 WinHttpCloseHandle(session_handle_); | 156 WinHttpCloseHandle(session_handle_); |
156 session_handle_ = NULL; | 157 session_handle_ = NULL; |
157 } | 158 } |
158 } | 159 } |
159 | 160 |
160 } // namespace net | 161 } // namespace net |
161 | 162 |
OLD | NEW |