Index: net/http/http_network_transaction.cc |
diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc |
index cf67b1d68131bc18710a182cd295efa6013a5f1d..b0481019b9b5ae493743cf3f619a5362d5dda0db 100644 |
--- a/net/http/http_network_transaction.cc |
+++ b/net/http/http_network_transaction.cc |
@@ -1012,6 +1012,14 @@ int HttpNetworkTransaction::DoReadHeadersComplete(int result) { |
= response_.headers->GetDataReductionProxyBypassEventType( |
&data_reduction_proxy_info); |
if (proxy_bypass_event < ProxyService::BYPASS_EVENT_TYPE_MAX) { |
+ // Bypass all proxies for one second on reception of a 4xx that |
+ // originated at the proxy. |
+ if (proxy_bypass_event == ProxyService::PROXY_4XX_BYPASS) { |
+ data_reduction_proxy_info.bypass_all = true; |
+ data_reduction_proxy_info.bypass_duration = |
+ base::TimeDelta::FromSeconds(1); |
+ } |
+ |
ProxyService* proxy_service = session_->proxy_service(); |
proxy_service->RecordDataReductionProxyBypassInfo( |