| Index: net/http/http_network_transaction.cc
|
| diff --git a/net/http/http_network_transaction.cc b/net/http/http_network_transaction.cc
|
| index 467eb940a65d7a6687b7085b3e9257f615036ab5..1981f7d3161eaff5c47884dd1bf3099a43777164 100644
|
| --- a/net/http/http_network_transaction.cc
|
| +++ b/net/http/http_network_transaction.cc
|
| @@ -47,6 +47,7 @@
|
| #include "net/http/http_stream_base.h"
|
| #include "net/http/http_stream_factory.h"
|
| #include "net/http/http_util.h"
|
| +#include "net/http/transport_security_state.h"
|
| #include "net/http/url_security_manager.h"
|
| #include "net/socket/client_socket_factory.h"
|
| #include "net/socket/socks_client_socket_pool.h"
|
| @@ -177,6 +178,32 @@ int HttpNetworkTransaction::Start(const HttpRequestInfo* request_info,
|
| proxy_ssl_config_.rev_checking_enabled = false;
|
| }
|
|
|
| + // Adjust the minimum version of SSL that Chrome should use.
|
| + bool sni_available =
|
| + server_ssl_config_.version_max >= SSL_PROTOCOL_VERSION_TLS1 ||
|
| + server_ssl_config_.version_fallback;
|
| + const std::string& host = request_->url.host();
|
| + TransportSecurityState::DomainState domain_state;
|
| + if (session_->params().transport_security_state->GetDomainState(
|
| + host, sni_available, &domain_state)) {
|
| + switch (domain_state.ssl_version_min) {
|
| + case SSL_CONNECTION_VERSION_SSL3:
|
| + server_ssl_config_.version_min = SSL_PROTOCOL_VERSION_SSL3;
|
| + break;
|
| + case SSL_CONNECTION_VERSION_TLS1:
|
| + server_ssl_config_.version_min = SSL_PROTOCOL_VERSION_TLS1;
|
| + break;
|
| + case SSL_CONNECTION_VERSION_TLS1_1:
|
| + server_ssl_config_.version_min = SSL_PROTOCOL_VERSION_TLS1_1;
|
| + break;
|
| + case SSL_CONNECTION_VERSION_TLS1_2:
|
| + server_ssl_config_.version_min = SSL_PROTOCOL_VERSION_TLS1_2;
|
| + break;
|
| + default:
|
| + break;
|
| + }
|
| + }
|
| +
|
| next_state_ = STATE_CREATE_STREAM;
|
| int rv = DoLoop(OK);
|
| if (rv == ERR_IO_PENDING)
|
|
|