| Index: net/quic/quic_stream_factory.cc
|
| diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
|
| index d8f33c0b929d7598bddc39d9ba39935a81e9c38c..b0bed1970f14845478a1fd57db0d0525d3e50521 100644
|
| --- a/net/quic/quic_stream_factory.cc
|
| +++ b/net/quic/quic_stream_factory.cc
|
| @@ -88,6 +88,7 @@ class QuicStreamFactory::Job {
|
| HostResolver* host_resolver,
|
| const HostPortPair& host_port_pair,
|
| bool is_https,
|
| + PrivacyMode privacy_mode,
|
| base::StringPiece method,
|
| QuicServerInfo* server_info,
|
| const BoundNetLog& net_log);
|
| @@ -128,7 +129,6 @@ class QuicStreamFactory::Job {
|
|
|
| QuicStreamFactory* factory_;
|
| SingleRequestHostResolver host_resolver_;
|
| - bool is_https_;
|
| QuicSessionKey session_key_;
|
| bool is_post_;
|
| scoped_ptr<QuicServerInfo> server_info_;
|
| @@ -145,13 +145,13 @@ QuicStreamFactory::Job::Job(QuicStreamFactory* factory,
|
| HostResolver* host_resolver,
|
| const HostPortPair& host_port_pair,
|
| bool is_https,
|
| + PrivacyMode privacy_mode,
|
| base::StringPiece method,
|
| QuicServerInfo* server_info,
|
| const BoundNetLog& net_log)
|
| : factory_(factory),
|
| host_resolver_(host_resolver),
|
| - is_https_(is_https),
|
| - session_key_(host_port_pair, is_https),
|
| + session_key_(host_port_pair, is_https, privacy_mode),
|
| is_post_(method == "POST"),
|
| server_info_(server_info),
|
| net_log_(net_log),
|
| @@ -273,9 +273,8 @@ int QuicStreamFactory::Job::DoLoadServerInfoComplete(int rv) {
|
| int QuicStreamFactory::Job::DoConnect() {
|
| io_state_ = STATE_CONNECT_COMPLETE;
|
|
|
| - int rv = factory_->CreateSession(session_key_.host_port_pair(), is_https_,
|
| - server_info_.Pass(), address_list_,
|
| - net_log_, &session_);
|
| + int rv = factory_->CreateSession(session_key_, server_info_.Pass(),
|
| + address_list_, net_log_, &session_);
|
| if (rv != OK) {
|
| DCHECK(rv != ERR_IO_PENDING);
|
| DCHECK(!session_);
|
| @@ -287,7 +286,7 @@ int QuicStreamFactory::Job::DoConnect() {
|
| return ERR_QUIC_PROTOCOL_ERROR;
|
| }
|
| rv = session_->CryptoConnect(
|
| - factory_->require_confirmation() || is_https_ || is_post_,
|
| + factory_->require_confirmation() || session_key_.is_https() || is_post_,
|
| base::Bind(&QuicStreamFactory::Job::OnIOComplete,
|
| base::Unretained(this)));
|
| return rv;
|
| @@ -322,13 +321,15 @@ QuicStreamRequest::~QuicStreamRequest() {
|
|
|
| int QuicStreamRequest::Request(const HostPortPair& host_port_pair,
|
| bool is_https,
|
| + PrivacyMode privacy_mode,
|
| base::StringPiece method,
|
| const BoundNetLog& net_log,
|
| const CompletionCallback& callback) {
|
| DCHECK(!stream_);
|
| DCHECK(callback_.is_null());
|
| DCHECK(factory_);
|
| - int rv = factory_->Create(host_port_pair, is_https, method, net_log, this);
|
| + int rv = factory_->Create(host_port_pair, is_https, privacy_mode, method,
|
| + net_log, this);
|
| if (rv == ERR_IO_PENDING) {
|
| host_port_pair_ = host_port_pair;
|
| is_https_ = is_https;
|
| @@ -404,10 +405,11 @@ QuicStreamFactory::~QuicStreamFactory() {
|
|
|
| int QuicStreamFactory::Create(const HostPortPair& host_port_pair,
|
| bool is_https,
|
| + PrivacyMode privacy_mode,
|
| base::StringPiece method,
|
| const BoundNetLog& net_log,
|
| QuicStreamRequest* request) {
|
| - QuicSessionKey session_key(host_port_pair, is_https);
|
| + QuicSessionKey session_key(host_port_pair, is_https, privacy_mode);
|
| if (HasActiveSession(session_key)) {
|
| request->set_stream(CreateIfSessionExists(session_key, net_log));
|
| return OK;
|
| @@ -429,8 +431,8 @@ int QuicStreamFactory::Create(const HostPortPair& host_port_pair,
|
| quic_server_info = quic_server_info_factory_->GetForServer(session_key);
|
| }
|
| }
|
| - scoped_ptr<Job> job(new Job(this, host_resolver_, host_port_pair,
|
| - is_https, method, quic_server_info, net_log));
|
| + scoped_ptr<Job> job(new Job(this, host_resolver_, host_port_pair, is_https,
|
| + privacy_mode, method, quic_server_info, net_log));
|
| int rv = job->Run(base::Bind(&QuicStreamFactory::OnJobComplete,
|
| base::Unretained(this), job.get()));
|
|
|
| @@ -653,14 +655,12 @@ bool QuicStreamFactory::HasActiveSession(
|
| }
|
|
|
| int QuicStreamFactory::CreateSession(
|
| - const HostPortPair& host_port_pair,
|
| - bool is_https,
|
| + const QuicSessionKey& session_key,
|
| scoped_ptr<QuicServerInfo> server_info,
|
| const AddressList& address_list,
|
| const BoundNetLog& net_log,
|
| QuicClientSession** session) {
|
| bool enable_port_selection = enable_port_selection_;
|
| - QuicSessionKey session_key(host_port_pair, is_https);
|
| if (enable_port_selection &&
|
| ContainsKey(gone_away_aliases_, session_key)) {
|
| // Disable port selection when the server is going away.
|
| @@ -673,7 +673,7 @@ int QuicStreamFactory::CreateSession(
|
| QuicConnectionId connection_id = random_generator_->RandUint64();
|
| IPEndPoint addr = *address_list.begin();
|
| scoped_refptr<PortSuggester> port_suggester =
|
| - new PortSuggester(host_port_pair, port_seed_);
|
| + new PortSuggester(session_key.host_port_pair(), port_seed_);
|
| DatagramSocket::BindType bind_type = enable_port_selection ?
|
| DatagramSocket::RANDOM_BIND : // Use our callback.
|
| DatagramSocket::DEFAULT_BIND; // Use OS to randomize.
|
| @@ -733,7 +733,8 @@ int QuicStreamFactory::CreateSession(
|
| QuicConfig config = config_;
|
| if (http_server_properties_) {
|
| const HttpServerProperties::NetworkStats* stats =
|
| - http_server_properties_->GetServerNetworkStats(host_port_pair);
|
| + http_server_properties_->GetServerNetworkStats(
|
| + session_key.host_port_pair());
|
| if (stats != NULL) {
|
| config.set_initial_round_trip_time_us(stats->rtt.InMicroseconds(),
|
| stats->rtt.InMicroseconds());
|
|
|