Chromium Code Reviews| Index: net/quic/chromium/quic_stream_factory.cc |
| diff --git a/net/quic/chromium/quic_stream_factory.cc b/net/quic/chromium/quic_stream_factory.cc |
| index 5665ce49d2e8350457989cd85096ff84966b1427..a1a54d3c4e2d9500747bc6e6fe202c583aa692ba 100644 |
| --- a/net/quic/chromium/quic_stream_factory.cc |
| +++ b/net/quic/chromium/quic_stream_factory.cc |
| @@ -326,6 +326,7 @@ class QuicStreamFactory::CertVerifierJob { |
| class QuicStreamFactory::Job { |
| public: |
| Job(QuicStreamFactory* factory, |
| + const QuicVersion& quic_version, |
| HostResolver* host_resolver, |
| const QuicSessionKey& key, |
| bool was_alternative_service_recently_broken, |
| @@ -366,6 +367,7 @@ class QuicStreamFactory::Job { |
| IoState io_state_; |
| QuicStreamFactory* factory_; |
| + QuicVersion quic_version_; |
| HostResolver* host_resolver_; |
| std::unique_ptr<HostResolver::Request> request_; |
| const QuicSessionKey key_; |
| @@ -383,6 +385,7 @@ class QuicStreamFactory::Job { |
| }; |
| QuicStreamFactory::Job::Job(QuicStreamFactory* factory, |
| + const QuicVersion& quic_version, |
| HostResolver* host_resolver, |
| const QuicSessionKey& key, |
| bool was_alternative_service_recently_broken, |
| @@ -390,6 +393,7 @@ QuicStreamFactory::Job::Job(QuicStreamFactory* factory, |
| const NetLogWithSource& net_log) |
| : io_state_(STATE_RESOLVE_HOST), |
| factory_(factory), |
| + quic_version_(quic_version), |
| host_resolver_(host_resolver), |
| key_(key), |
| cert_verify_flags_(cert_verify_flags), |
| @@ -508,10 +512,11 @@ int QuicStreamFactory::Job::DoConnect() { |
| NetLogEventType::QUIC_STREAM_FACTORY_JOB_CONNECT, |
| NetLog::BoolCallback("require_confirmation", require_confirmation)); |
| - int rv = |
| - factory_->CreateSession(key_, cert_verify_flags_, require_confirmation, |
| - address_list_, dns_resolution_start_time_, |
| - dns_resolution_end_time_, net_log_, &session_); |
| + DCHECK_NE(quic_version_, QUIC_VERSION_UNSUPPORTED); |
| + int rv = factory_->CreateSession( |
| + key_, quic_version_, cert_verify_flags_, require_confirmation, |
| + address_list_, dns_resolution_start_time_, dns_resolution_end_time_, |
| + net_log_, &session_); |
| if (rv != OK) { |
| DCHECK(rv != ERR_IO_PENDING); |
| DCHECK(!session_); |
| @@ -581,18 +586,20 @@ QuicStreamRequest::~QuicStreamRequest() { |
| } |
| int QuicStreamRequest::Request(const HostPortPair& destination, |
| + QuicVersion quic_version, |
| PrivacyMode privacy_mode, |
| int cert_verify_flags, |
| const GURL& url, |
| QuicStringPiece method, |
| const NetLogWithSource& net_log, |
| const CompletionCallback& callback) { |
| + DCHECK_NE(quic_version, QUIC_VERSION_UNSUPPORTED); |
| DCHECK(callback_.is_null()); |
| DCHECK(factory_); |
| server_id_ = QuicServerId(HostPortPair::FromURL(url), privacy_mode); |
| - int rv = factory_->Create(server_id_, destination, cert_verify_flags, url, |
| - method, net_log, this); |
| + int rv = factory_->Create(server_id_, destination, quic_version, |
| + cert_verify_flags, url, method, net_log, this); |
| if (rv == ERR_IO_PENDING) { |
| net_log_ = net_log; |
| callback_ = callback; |
| @@ -849,6 +856,7 @@ bool QuicStreamFactory::CanUseExistingSession(const QuicServerId& server_id, |
| int QuicStreamFactory::Create(const QuicServerId& server_id, |
| const HostPortPair& destination, |
| + QuicVersion quic_version, |
| int cert_verify_flags, |
| const GURL& url, |
| QuicStringPiece method, |
| @@ -927,7 +935,7 @@ int QuicStreamFactory::Create(const QuicServerId& server_id, |
| QuicSessionKey key(destination, server_id); |
| std::unique_ptr<Job> job = base::MakeUnique<Job>( |
| - this, host_resolver_, key, WasQuicRecentlyBroken(server_id), |
| + this, quic_version, host_resolver_, key, WasQuicRecentlyBroken(server_id), |
| cert_verify_flags, net_log); |
| int rv = job->Run(base::Bind(&QuicStreamFactory::OnJobComplete, |
| base::Unretained(this), job.get())); |
| @@ -1458,15 +1466,15 @@ int QuicStreamFactory::ConfigureSocket(DatagramClientSocket* socket, |
| return OK; |
| } |
| -int QuicStreamFactory::CreateSession( |
| - const QuicSessionKey& key, |
| - int cert_verify_flags, |
| - bool require_confirmation, |
| - const AddressList& address_list, |
| - base::TimeTicks dns_resolution_start_time, |
| - base::TimeTicks dns_resolution_end_time, |
| - const NetLogWithSource& net_log, |
| - QuicChromiumClientSession** session) { |
| +int QuicStreamFactory::CreateSession(const QuicSessionKey& key, |
| + const QuicVersion& quic_version, |
| + int cert_verify_flags, |
| + bool require_confirmation, |
| + const AddressList& address_list, |
| + base::TimeTicks dns_resolution_start_time, |
| + base::TimeTicks dns_resolution_end_time, |
| + const NetLogWithSource& net_log, |
| + QuicChromiumClientSession** session) { |
| TRACE_EVENT0(kNetTracingCategory, "QuicStreamFactory::CreateSession"); |
| IPEndPoint addr = *address_list.begin(); |
| const QuicServerId& server_id = key.server_id(); |
| @@ -1502,7 +1510,7 @@ int QuicStreamFactory::CreateSession( |
| QuicConnection* connection = new QuicConnection( |
| connection_id, QuicSocketAddress(QuicSocketAddressImpl(addr)), |
| helper_.get(), alarm_factory_.get(), writer, true /* owns_writer */, |
| - Perspective::IS_CLIENT, supported_versions_); |
|
Ryan Hamilton
2017/07/06 13:27:45
Can we get rid of the supported_versions_ member?
|
| + Perspective::IS_CLIENT, {quic_version}); |
| connection->set_ping_timeout(ping_timeout_); |
| connection->SetMaxPacketLength(max_packet_length_); |