Index: net/quic/quic_client_session.cc |
diff --git a/net/quic/quic_client_session.cc b/net/quic/quic_client_session.cc |
index c6699f189bace3a856695447723baebb27611843..b1367249baa52dc3e6fb521ed925c484a28a0b7e 100644 |
--- a/net/quic/quic_client_session.cc |
+++ b/net/quic/quic_client_session.cc |
@@ -13,6 +13,7 @@ |
#include "base/values.h" |
#include "net/base/io_buffer.h" |
#include "net/base/net_errors.h" |
+#include "net/http/transport_security_state.h" |
#include "net/quic/crypto/proof_verifier_chromium.h" |
#include "net/quic/crypto/quic_server_info.h" |
#include "net/quic/quic_connection_helper.h" |
@@ -20,6 +21,7 @@ |
#include "net/quic/quic_default_packet_writer.h" |
#include "net/quic/quic_server_id.h" |
#include "net/quic/quic_stream_factory.h" |
+#include "net/spdy/spdy_session.h" |
#include "net/ssl/channel_id_service.h" |
#include "net/ssl/ssl_connection_status_flags.h" |
#include "net/ssl/ssl_info.h" |
@@ -138,6 +140,7 @@ QuicClientSession::QuicClientSession( |
scoped_ptr<QuicDefaultPacketWriter> writer, |
QuicStreamFactory* stream_factory, |
QuicCryptoClientStreamFactory* crypto_client_stream_factory, |
+ TransportSecurityState* transport_security_state, |
scoped_ptr<QuicServerInfo> server_info, |
const QuicServerId& server_id, |
const QuicConfig& config, |
@@ -151,6 +154,7 @@ QuicClientSession::QuicClientSession( |
socket_(socket.Pass()), |
writer_(writer.Pass()), |
read_buffer_(new IOBufferWithSize(kMaxPacketSize)), |
+ transport_security_state_(transport_security_state), |
server_info_(server_info.Pass()), |
read_pending_(false), |
num_total_streams_(0), |
@@ -489,28 +493,8 @@ bool QuicClientSession::CanPool(const std::string& hostname) const { |
return true; |
} |
- // Disable pooling for secure sessions. |
- // TODO(rch): re-enable this. |
- return false; |
-#if 0 |
- bool unused = false; |
- // Pooling is prohibited if the server cert is not valid for the new domain, |
- // and for connections on which client certs were sent. It is also prohibited |
- // when channel ID was sent if the hosts are from different eTLDs+1. |
- if (!ssl_info.cert->VerifyNameMatch(hostname, &unused)) |
- return false; |
- |
- if (ssl_info.client_cert_sent) |
- return false; |
- |
- if (ssl_info.channel_id_sent && |
- ChannelIDService::GetDomainForHost(hostname) != |
- ChannelIDService::GetDomainForHost(server_host_port_.host())) { |
- return false; |
- } |
- |
- return true; |
-#endif |
+ return SpdySession::CanPool(transport_security_state_, ssl_info, |
+ server_host_port_.host(), hostname); |
} |
QuicDataStream* QuicClientSession::CreateIncomingDataStream( |