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

Side by Side Diff: net/http/http_network_transaction.cc

Issue 99283006: Retry idempotent methods on Chrome-Proxy: bypass (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years 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
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/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 969 matching lines...) Expand 10 before | Expand all | Expand 10 after
980 } 980 }
981 981
982 if (proxy_bypass_event < ProxyService::BYPASS_EVENT_TYPE_MAX) { 982 if (proxy_bypass_event < ProxyService::BYPASS_EVENT_TYPE_MAX) {
983 ProxyService* proxy_service = session_->proxy_service(); 983 ProxyService* proxy_service = session_->proxy_service();
984 984
985 proxy_service->RecordDataReductionProxyBypassInfo( 985 proxy_service->RecordDataReductionProxyBypassInfo(
986 chrome_proxy_used, proxy_info_.proxy_server(), proxy_bypass_event); 986 chrome_proxy_used, proxy_info_.proxy_server(), proxy_bypass_event);
987 987
988 if (proxy_service->MarkProxyAsBad(proxy_info_, bypass_duration, 988 if (proxy_service->MarkProxyAsBad(proxy_info_, bypass_duration,
989 net_log_)) { 989 net_log_)) {
990 // Only retry in the case of GETs. We don't want to resubmit a POST 990 // Only retry idempotent methods.
991 // if the proxy took some action. 991 if (request_->method == "GET" ||
mef 2013/12/18 16:34:41 Is request_->method guaranteed to be upper case?
bengr 2013/12/18 19:39:47 Yes. From RFC 2616, sec 5.1.1 Method: "The Method
992 if (request_->method == "GET") { 992 request_->method == "OPTIONS" ||
993 request_->method == "HEAD" ||
994 request_->method == "PUT" ||
995 request_->method == "DELETE" ||
996 request_->method == "TRACE") {
993 ResetConnectionAndRequestForResend(); 997 ResetConnectionAndRequestForResend();
994 return OK; 998 return OK;
995 } 999 }
996 } 1000 }
997 } 1001 }
998 } 1002 }
999 } 1003 }
1000 #endif 1004 #endif
1001 1005
1002 // Like Net.HttpResponseCode, but only for MAIN_FRAME loads. 1006 // Like Net.HttpResponseCode, but only for MAIN_FRAME loads.
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
1541 description = base::StringPrintf("Unknown state 0x%08X (%u)", state, 1545 description = base::StringPrintf("Unknown state 0x%08X (%u)", state,
1542 state); 1546 state);
1543 break; 1547 break;
1544 } 1548 }
1545 return description; 1549 return description;
1546 } 1550 }
1547 1551
1548 #undef STATE_CASE 1552 #undef STATE_CASE
1549 1553
1550 } // namespace net 1554 } // namespace net
OLDNEW
« net/http/http_network_layer_unittest.cc ('K') | « net/http/http_network_layer_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698