| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
| 11 #include "base/field_trial.h" | 11 #include "base/field_trial.h" |
| 12 #include "base/format_macros.h" | 12 #include "base/format_macros.h" |
| 13 #include "base/histogram.h" | 13 #include "base/histogram.h" |
| 14 #include "base/scoped_ptr.h" | 14 #include "base/scoped_ptr.h" |
| 15 #include "base/stats_counters.h" | 15 #include "base/stats_counters.h" |
| 16 #include "base/stl_util-inl.h" | 16 #include "base/stl_util-inl.h" |
| 17 #include "base/string_util.h" | 17 #include "base/string_util.h" |
| 18 #include "base/string_number_conversions.h" |
| 18 #include "build/build_config.h" | 19 #include "build/build_config.h" |
| 19 #include "googleurl/src/gurl.h" | 20 #include "googleurl/src/gurl.h" |
| 20 #include "net/base/connection_type_histograms.h" | 21 #include "net/base/connection_type_histograms.h" |
| 21 #include "net/base/host_mapping_rules.h" | 22 #include "net/base/host_mapping_rules.h" |
| 22 #include "net/base/io_buffer.h" | 23 #include "net/base/io_buffer.h" |
| 23 #include "net/base/load_flags.h" | 24 #include "net/base/load_flags.h" |
| 24 #include "net/base/net_errors.h" | 25 #include "net/base/net_errors.h" |
| 25 #include "net/base/net_util.h" | 26 #include "net/base/net_util.h" |
| 26 #include "net/base/ssl_cert_request_info.h" | 27 #include "net/base/ssl_cert_request_info.h" |
| 27 #include "net/base/ssl_connection_status_flags.h" | 28 #include "net/base/ssl_connection_status_flags.h" |
| (...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 643 request_->url.EffectiveIntPort()); | 644 request_->url.EffectiveIntPort()); |
| 644 | 645 |
| 645 // Extra URL we might be attempting to resolve to. | 646 // Extra URL we might be attempting to resolve to. |
| 646 GURL alternate_endpoint_url; | 647 GURL alternate_endpoint_url; |
| 647 | 648 |
| 648 // Tracks whether we are using |request_->url| or |alternate_endpoint_url|. | 649 // Tracks whether we are using |request_->url| or |alternate_endpoint_url|. |
| 649 const GURL *curr_endpoint_url = &request_->url; | 650 const GURL *curr_endpoint_url = &request_->url; |
| 650 | 651 |
| 651 if (g_host_mapping_rules && g_host_mapping_rules->RewriteHost(&endpoint_)) { | 652 if (g_host_mapping_rules && g_host_mapping_rules->RewriteHost(&endpoint_)) { |
| 652 url_canon::Replacements<char> replacements; | 653 url_canon::Replacements<char> replacements; |
| 653 const std::string port_str = IntToString(endpoint_.port()); | 654 const std::string port_str = base::IntToString(endpoint_.port()); |
| 654 replacements.SetPort(port_str.c_str(), | 655 replacements.SetPort(port_str.c_str(), |
| 655 url_parse::Component(0, port_str.size())); | 656 url_parse::Component(0, port_str.size())); |
| 656 replacements.SetHost(endpoint_.host().c_str(), | 657 replacements.SetHost(endpoint_.host().c_str(), |
| 657 url_parse::Component(0, endpoint_.host().size())); | 658 url_parse::Component(0, endpoint_.host().size())); |
| 658 alternate_endpoint_url = curr_endpoint_url->ReplaceComponents(replacements); | 659 alternate_endpoint_url = curr_endpoint_url->ReplaceComponents(replacements); |
| 659 curr_endpoint_url = &alternate_endpoint_url; | 660 curr_endpoint_url = &alternate_endpoint_url; |
| 660 } | 661 } |
| 661 | 662 |
| 662 const HttpAlternateProtocols& alternate_protocols = | 663 const HttpAlternateProtocols& alternate_protocols = |
| 663 session_->alternate_protocols(); | 664 session_->alternate_protocols(); |
| 664 if (alternate_protocols.HasAlternateProtocolFor(endpoint_)) { | 665 if (alternate_protocols.HasAlternateProtocolFor(endpoint_)) { |
| 665 response_.was_alternate_protocol_available = true; | 666 response_.was_alternate_protocol_available = true; |
| 666 if (alternate_protocol_mode_ == kUnspecified) { | 667 if (alternate_protocol_mode_ == kUnspecified) { |
| 667 HttpAlternateProtocols::PortProtocolPair alternate = | 668 HttpAlternateProtocols::PortProtocolPair alternate = |
| 668 alternate_protocols.GetAlternateProtocolFor(endpoint_); | 669 alternate_protocols.GetAlternateProtocolFor(endpoint_); |
| 669 if (alternate.protocol != HttpAlternateProtocols::BROKEN) { | 670 if (alternate.protocol != HttpAlternateProtocols::BROKEN) { |
| 670 DCHECK_LE(HttpAlternateProtocols::NPN_SPDY_1, alternate.protocol); | 671 DCHECK_LE(HttpAlternateProtocols::NPN_SPDY_1, alternate.protocol); |
| 671 DCHECK_GT(HttpAlternateProtocols::NUM_ALTERNATE_PROTOCOLS, | 672 DCHECK_GT(HttpAlternateProtocols::NUM_ALTERNATE_PROTOCOLS, |
| 672 alternate.protocol); | 673 alternate.protocol); |
| 673 endpoint_.set_port(alternate.port); | 674 endpoint_.set_port(alternate.port); |
| 674 alternate_protocol_ = alternate.protocol; | 675 alternate_protocol_ = alternate.protocol; |
| 675 alternate_protocol_mode_ = kUsingAlternateProtocol; | 676 alternate_protocol_mode_ = kUsingAlternateProtocol; |
| 676 | 677 |
| 677 url_canon::Replacements<char> replacements; | 678 url_canon::Replacements<char> replacements; |
| 678 replacements.SetScheme("https", | 679 replacements.SetScheme("https", |
| 679 url_parse::Component(0, strlen("https"))); | 680 url_parse::Component(0, strlen("https"))); |
| 680 const std::string port_str = IntToString(endpoint_.port()); | 681 const std::string port_str = base::IntToString(endpoint_.port()); |
| 681 replacements.SetPort(port_str.c_str(), | 682 replacements.SetPort(port_str.c_str(), |
| 682 url_parse::Component(0, port_str.size())); | 683 url_parse::Component(0, port_str.size())); |
| 683 alternate_endpoint_url = | 684 alternate_endpoint_url = |
| 684 curr_endpoint_url->ReplaceComponents(replacements); | 685 curr_endpoint_url->ReplaceComponents(replacements); |
| 685 curr_endpoint_url = &alternate_endpoint_url; | 686 curr_endpoint_url = &alternate_endpoint_url; |
| 686 } | 687 } |
| 687 } | 688 } |
| 688 } | 689 } |
| 689 | 690 |
| 690 if (request_->load_flags & LOAD_BYPASS_PROXY) { | 691 if (request_->load_flags & LOAD_BYPASS_PROXY) { |
| (...skipping 1138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1829 default: | 1830 default: |
| 1830 description = StringPrintf("Unknown state 0x%08X (%u)", state, state); | 1831 description = StringPrintf("Unknown state 0x%08X (%u)", state, state); |
| 1831 break; | 1832 break; |
| 1832 } | 1833 } |
| 1833 return description; | 1834 return description; |
| 1834 } | 1835 } |
| 1835 | 1836 |
| 1836 #undef STATE_CASE | 1837 #undef STATE_CASE |
| 1837 | 1838 |
| 1838 } // namespace net | 1839 } // namespace net |
| OLD | NEW |