Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(271)

Side by Side Diff: net/proxy/proxy_service.cc

Issue 1126413006: Temporary fix to prevent the DRP from being activated improperly. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | net/proxy/proxy_service_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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_service.h" 5 #include "net/proxy/proxy_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/bind_helpers.h" 10 #include "base/bind_helpers.h"
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 ~UnsetProxyConfigService() override {} 347 ~UnsetProxyConfigService() override {}
348 348
349 void AddObserver(Observer* observer) override {} 349 void AddObserver(Observer* observer) override {}
350 void RemoveObserver(Observer* observer) override {} 350 void RemoveObserver(Observer* observer) override {}
351 ConfigAvailability GetLatestProxyConfig(ProxyConfig* config) override { 351 ConfigAvailability GetLatestProxyConfig(ProxyConfig* config) override {
352 return CONFIG_UNSET; 352 return CONFIG_UNSET;
353 } 353 }
354 }; 354 };
355 #endif 355 #endif
356 356
357 // Removes any Data Reduction Proxies like *.googlezip.net from |proxy_list|.
bengr 2015/05/10 16:49:34 Consider limiting all of this logic to android and
Not at Google. Contact bengr 2015/05/11 17:24:09 Can we verify that this does not affect desktop? I
sclittle 2015/05/11 20:43:36 But either way, this code would only remove data r
358 void RemoveGooglezipDataReductionProxies(ProxyList* proxy_list) {
bengr 2015/05/10 16:49:34 Add a TODO to add UMA to track how often this is c
sclittle 2015/05/11 20:43:36 Done.
359 if (proxy_list->IsEmpty())
bengr 2015/05/10 16:49:34 #include "net/proxy/proxy_list.h"
sclittle 2015/05/11 20:43:36 Done.
360 return;
361
362 ProxyList replacement_list;
363 for (const ProxyServer& proxy : proxy_list->GetAll()) {
364 if (!proxy.is_valid() || proxy.is_direct() ||
365 !EndsWith(proxy.host_port_pair().host(), ".googlezip.net", true)) {
366 replacement_list.AddProxyServer(proxy);
bengr 2015/05/10 16:49:33 add an else clause that sets found_googlezip_proxy
sclittle 2015/05/11 20:43:36 Instead of using a bool variable, I just check if
367 }
368 }
369
370 if (replacement_list.IsEmpty())
371 replacement_list.AddProxyServer(ProxyServer::Direct());
bengr 2015/05/10 16:49:34 Is this the contents of a list when there's no con
Not at Google. Contact bengr 2015/05/11 17:24:09 Instead of setting ProxyServer::Direct(), you shou
sclittle 2015/05/11 20:43:36 Re bengr: It's possible that the DRP was configure
372 *proxy_list = replacement_list;
bengr 2015/05/10 16:49:34 replace only if found_googlezip_proxy is true.
sclittle 2015/05/11 20:43:36 Done, but instead of using a found_googlezip_proxy
373 }
374
375 // Remove any Data Reduction Proxies like *.googlezip.net from |proxy_rules|.
376 void RemoveGooglezipDataReductionProxiesFromRules(
377 ProxyConfig::ProxyRules* proxy_rules) {
378 RemoveGooglezipDataReductionProxies(&proxy_rules->fallback_proxies);
bengr 2015/05/10 16:49:34 #include "net/proxy/proxy_config.h"
sclittle 2015/05/11 20:43:36 Done.
379 RemoveGooglezipDataReductionProxies(&proxy_rules->proxies_for_ftp);
380 RemoveGooglezipDataReductionProxies(&proxy_rules->proxies_for_http);
bengr 2015/05/10 16:49:34 We only ever set HTTP. I can understand checking f
sclittle 2015/05/11 20:43:36 For thoroughness; there's no harm in checking the
381 RemoveGooglezipDataReductionProxies(&proxy_rules->proxies_for_https);
382 RemoveGooglezipDataReductionProxies(&proxy_rules->single_proxies);
383 }
384
357 } // namespace 385 } // namespace
358 386
359 // ProxyService::InitProxyResolver -------------------------------------------- 387 // ProxyService::InitProxyResolver --------------------------------------------
360 388
361 // This glues together two asynchronous steps: 389 // This glues together two asynchronous steps:
362 // (1) ProxyScriptDecider -- try to fetch/validate a sequence of PAC scripts 390 // (1) ProxyScriptDecider -- try to fetch/validate a sequence of PAC scripts
363 // to figure out what we should configure against. 391 // to figure out what we should configure against.
364 // (2) Feed the fetched PAC script into the ProxyResolver. 392 // (2) Feed the fetched PAC script into the ProxyResolver.
365 // 393 //
366 // InitProxyResolver is a single-use class which encapsulates cancellation as 394 // InitProxyResolver is a single-use class which encapsulates cancellation as
(...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after
1153 PacRequest* req = it->get(); 1181 PacRequest* req = it->get();
1154 if (req->is_started()) { 1182 if (req->is_started()) {
1155 req->CancelResolveJob(); 1183 req->CancelResolveJob();
1156 1184
1157 req->net_log()->BeginEvent( 1185 req->net_log()->BeginEvent(
1158 NetLog::TYPE_PROXY_SERVICE_WAITING_FOR_INIT_PAC); 1186 NetLog::TYPE_PROXY_SERVICE_WAITING_FOR_INIT_PAC);
1159 } 1187 }
1160 } 1188 }
1161 } 1189 }
1162 1190
1191 namespace {} // namespace
1192
1163 void ProxyService::SetReady() { 1193 void ProxyService::SetReady() {
1164 DCHECK(!init_proxy_resolver_.get()); 1194 DCHECK(!init_proxy_resolver_.get());
1165 current_state_ = STATE_READY; 1195 current_state_ = STATE_READY;
1166 1196
1197 // Remove any Data Reduction Proxies like *.googlezip.net from the proxy
1198 // config rules, since specifying a DRP in the proxy rules is not a supported
1199 // means of activating the DRP, and could cause requests to be sent to the DRP
1200 // without the appropriate authentication headers and without using any of the
1201 // DRP bypass logic.
1202 // TODO(sclittle): This is a temporary hotfix for http://crbug.com/476610, and
1203 // should be removed once that bug is fixed and verified.
1204 RemoveGooglezipDataReductionProxiesFromRules(&config_.proxy_rules());
bengr 2015/05/10 16:49:34 Please explain when you expect this to be called.
sclittle 2015/05/11 20:43:36 Added comment. This will be called whenever SetRea
1205
1167 // Make a copy in case |this| is deleted during the synchronous completion 1206 // Make a copy in case |this| is deleted during the synchronous completion
1168 // of one of the requests. If |this| is deleted then all of the PacRequest 1207 // of one of the requests. If |this| is deleted then all of the PacRequest
1169 // instances will be Cancel()-ed. 1208 // instances will be Cancel()-ed.
1170 PendingRequests pending_copy = pending_requests_; 1209 PendingRequests pending_copy = pending_requests_;
1171 1210
1172 for (PendingRequests::iterator it = pending_copy.begin(); 1211 for (PendingRequests::iterator it = pending_copy.begin();
1173 it != pending_copy.end(); 1212 it != pending_copy.end();
1174 ++it) { 1213 ++it) {
1175 PacRequest* req = it->get(); 1214 PacRequest* req = it->get();
1176 if (!req->is_started() && !req->was_cancelled()) { 1215 if (!req->is_started() && !req->was_cancelled()) {
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
1631 State previous_state = ResetProxyConfig(false); 1670 State previous_state = ResetProxyConfig(false);
1632 if (previous_state != STATE_NONE) 1671 if (previous_state != STATE_NONE)
1633 ApplyProxyConfigIfAvailable(); 1672 ApplyProxyConfigIfAvailable();
1634 } 1673 }
1635 1674
1636 void ProxyService::OnDNSChanged() { 1675 void ProxyService::OnDNSChanged() {
1637 OnIPAddressChanged(); 1676 OnIPAddressChanged();
1638 } 1677 }
1639 1678
1640 } // namespace net 1679 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | net/proxy/proxy_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698