| Index: net/http/http_network_transaction.cc
|
| diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
|
| index d9397e4cfbc30dd4f8eab5fb3cf1e5233b277590..14ed89b0d495cee0b75fe54c1ca833b1134f6e36 100644
|
| --- a/net/http/http_network_transaction.cc
|
| +++ b/net/http/http_network_transaction.cc
|
| @@ -987,6 +987,19 @@ int HttpNetworkTransaction::DoReadHeadersComplete(int result) {
|
|
|
| DCHECK(response_.headers.get());
|
|
|
| + // On a 408 response from the server ("Request Timeout") on a stale socket,
|
| + // retry the request.
|
| + if (response_.headers->response_code() == 408 &&
|
| + stream_->IsConnectionReused()) {
|
| + net_log_.AddEventWithNetErrorCode(
|
| + NetLog::TYPE_HTTP_TRANSACTION_RESTART_AFTER_ERROR,
|
| + response_.headers->response_code());
|
| + // This will close the socket - it would be weird to try and reuse it, even
|
| + // if the server doesn't actually close it.
|
| + ResetConnectionAndRequestForResend();
|
| + return OK;
|
| + }
|
| +
|
| #if defined(SPDY_PROXY_AUTH_ORIGIN)
|
| // Server-induced fallback; see: http://crbug.com/143712
|
| if (response_.was_fetched_via_proxy) {
|
|
|