OLD | NEW |
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 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
390 bool HttpNetworkTransaction::GetLoadTimingInfo( | 390 bool HttpNetworkTransaction::GetLoadTimingInfo( |
391 LoadTimingInfo* load_timing_info) const { | 391 LoadTimingInfo* load_timing_info) const { |
392 if (!stream_ || !stream_->GetLoadTimingInfo(load_timing_info)) | 392 if (!stream_ || !stream_->GetLoadTimingInfo(load_timing_info)) |
393 return false; | 393 return false; |
394 | 394 |
395 load_timing_info->proxy_resolve_start = | 395 load_timing_info->proxy_resolve_start = |
396 proxy_info_.proxy_resolve_start_time(); | 396 proxy_info_.proxy_resolve_start_time(); |
397 load_timing_info->proxy_resolve_end = proxy_info_.proxy_resolve_end_time(); | 397 load_timing_info->proxy_resolve_end = proxy_info_.proxy_resolve_end_time(); |
398 load_timing_info->send_start = send_start_time_; | 398 load_timing_info->send_start = send_start_time_; |
399 load_timing_info->send_end = send_end_time_; | 399 load_timing_info->send_end = send_end_time_; |
400 load_timing_info->receive_headers_end = receive_headers_end_; | |
401 return true; | 400 return true; |
402 } | 401 } |
403 | 402 |
404 void HttpNetworkTransaction::SetPriority(RequestPriority priority) { | 403 void HttpNetworkTransaction::SetPriority(RequestPriority priority) { |
405 priority_ = priority; | 404 priority_ = priority; |
406 // TODO(akalin): Plumb this through to |stream_request_| and | 405 // TODO(akalin): Plumb this through to |stream_request_| and |
407 // |stream_|. | 406 // |stream_|. |
408 } | 407 } |
409 | 408 |
410 void HttpNetworkTransaction::OnStreamReady(const SSLConfig& used_ssl_config, | 409 void HttpNetworkTransaction::OnStreamReady(const SSLConfig& used_ssl_config, |
(...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
839 if (!response_.headers && !stream_->IsConnectionReused()) { | 838 if (!response_.headers && !stream_->IsConnectionReused()) { |
840 // The connection was closed before any data was sent. Likely an error | 839 // The connection was closed before any data was sent. Likely an error |
841 // rather than empty HTTP/0.9 response. | 840 // rather than empty HTTP/0.9 response. |
842 return ERR_EMPTY_RESPONSE; | 841 return ERR_EMPTY_RESPONSE; |
843 } | 842 } |
844 | 843 |
845 return OK; | 844 return OK; |
846 } | 845 } |
847 | 846 |
848 int HttpNetworkTransaction::DoReadHeadersComplete(int result) { | 847 int HttpNetworkTransaction::DoReadHeadersComplete(int result) { |
849 receive_headers_end_ = base::TimeTicks::Now(); | |
850 | |
851 // We can get a certificate error or ERR_SSL_CLIENT_AUTH_CERT_NEEDED here | 848 // We can get a certificate error or ERR_SSL_CLIENT_AUTH_CERT_NEEDED here |
852 // due to SSL renegotiation. | 849 // due to SSL renegotiation. |
853 if (IsCertificateError(result)) { | 850 if (IsCertificateError(result)) { |
854 // We don't handle a certificate error during SSL renegotiation, so we | 851 // We don't handle a certificate error during SSL renegotiation, so we |
855 // have to return an error that's not in the certificate error range | 852 // have to return an error that's not in the certificate error range |
856 // (-2xx). | 853 // (-2xx). |
857 LOG(ERROR) << "Got a server certificate with error " << result | 854 LOG(ERROR) << "Got a server certificate with error " << result |
858 << " during SSL renegotiation"; | 855 << " during SSL renegotiation"; |
859 result = ERR_CERT_ERROR_IN_SSL_RENEGOTIATION; | 856 result = ERR_CERT_ERROR_IN_SSL_RENEGOTIATION; |
860 } else if (result == ERR_SSL_CLIENT_AUTH_CERT_NEEDED) { | 857 } else if (result == ERR_SSL_CLIENT_AUTH_CERT_NEEDED) { |
(...skipping 427 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1288 } | 1285 } |
1289 | 1286 |
1290 void HttpNetworkTransaction::ResetStateForRestart() { | 1287 void HttpNetworkTransaction::ResetStateForRestart() { |
1291 ResetStateForAuthRestart(); | 1288 ResetStateForAuthRestart(); |
1292 stream_.reset(); | 1289 stream_.reset(); |
1293 } | 1290 } |
1294 | 1291 |
1295 void HttpNetworkTransaction::ResetStateForAuthRestart() { | 1292 void HttpNetworkTransaction::ResetStateForAuthRestart() { |
1296 send_start_time_ = base::TimeTicks(); | 1293 send_start_time_ = base::TimeTicks(); |
1297 send_end_time_ = base::TimeTicks(); | 1294 send_end_time_ = base::TimeTicks(); |
1298 receive_headers_end_ = base::TimeTicks(); | |
1299 | 1295 |
1300 pending_auth_target_ = HttpAuth::AUTH_NONE; | 1296 pending_auth_target_ = HttpAuth::AUTH_NONE; |
1301 read_buf_ = NULL; | 1297 read_buf_ = NULL; |
1302 read_buf_len_ = 0; | 1298 read_buf_len_ = 0; |
1303 headers_valid_ = false; | 1299 headers_valid_ = false; |
1304 request_headers_.Clear(); | 1300 request_headers_.Clear(); |
1305 response_ = HttpResponseInfo(); | 1301 response_ = HttpResponseInfo(); |
1306 establishing_tunnel_ = false; | 1302 establishing_tunnel_ = false; |
1307 } | 1303 } |
1308 | 1304 |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1427 description = base::StringPrintf("Unknown state 0x%08X (%u)", state, | 1423 description = base::StringPrintf("Unknown state 0x%08X (%u)", state, |
1428 state); | 1424 state); |
1429 break; | 1425 break; |
1430 } | 1426 } |
1431 return description; | 1427 return description; |
1432 } | 1428 } |
1433 | 1429 |
1434 #undef STATE_CASE | 1430 #undef STATE_CASE |
1435 | 1431 |
1436 } // namespace net | 1432 } // namespace net |
OLD | NEW |