QUIC - Fix QUIC enabled experiment spending significantly more time verifying certs on Android.
Get computed CertVerifier::VerifyFlags from SSLConfig from
HttpStreamFactoryImpl::Job and pass them to QUIC's
CertVerifier code. With this change, when
SSLClientSocket[NSS|OpenSSL] code tries to verify the
code, certs are already cached and we don't verify certs
twice.
BUG=502509
[email protected]
Review URL: https://codereview.chromium.org/1197823002
Cr-Commit-Position: refs/heads/master@{#335463}
diff --git a/net/http/http_stream_factory_impl_job.cc b/net/http/http_stream_factory_impl_job.cc
index 1ae8aa7..a1f802d 100644
--- a/net/http/http_stream_factory_impl_job.cc
+++ b/net/http/http_stream_factory_impl_job.cc
@@ -23,6 +23,7 @@
#include "build/build_config.h"
#include "net/base/connection_type_histograms.h"
#include "net/base/net_util.h"
+#include "net/cert/cert_verifier.h"
#include "net/http/http_basic_stream.h"
#include "net/http/http_network_session.h"
#include "net/http/http_proxy_client_socket.h"
@@ -803,6 +804,17 @@
DCHECK(session_->params().enable_quic_for_proxies);
}
+ if (proxy_info_.is_https() || proxy_info_.is_quic()) {
+ InitSSLConfig(proxy_info_.proxy_server().host_port_pair(),
+ &proxy_ssl_config_, /*is_proxy=*/true);
+ // Disable revocation checking for HTTPS proxies since the revocation
+ // requests are probably going to need to go through the proxy too.
+ proxy_ssl_config_.rev_checking_enabled = false;
+ }
+ if (using_ssl_) {
+ InitSSLConfig(server_, &server_ssl_config_, /*is_proxy=*/false);
+ }
+
if (using_quic_) {
if (proxy_info_.is_quic() && !request_info_.url.SchemeIs("http")) {
NOTREACHED();
@@ -812,11 +824,13 @@
HostPortPair destination;
std::string origin_host;
bool secure_quic;
+ SSLConfig* ssl_config;
if (proxy_info_.is_quic()) {
// A proxy's certificate is expected to be valid for the proxy hostname.
destination = proxy_info_.proxy_server().host_port_pair();
origin_host = destination.host();
secure_quic = true;
+ ssl_config = &proxy_ssl_config_;
} else {
// The certificate of a QUIC alternative server is expected to be valid
// for the origin of the request (in addition to being valid for the
@@ -824,10 +838,21 @@
destination = server_;
origin_host = origin_url_.host();
secure_quic = using_ssl_;
+ ssl_config = &server_ssl_config_;
}
+ // TODO(rtenneti): Move the cert_verify_flags code into SSLConfig class.
+ int flags = 0;
+ if (ssl_config->rev_checking_enabled)
+ flags |= CertVerifier::VERIFY_REV_CHECKING_ENABLED;
+ if (ssl_config->verify_ev_cert)
+ flags |= CertVerifier::VERIFY_EV_CERT;
+ if (ssl_config->cert_io_enabled)
+ flags |= CertVerifier::VERIFY_CERT_IO_ENABLED;
+ if (ssl_config->rev_checking_required_local_anchors)
+ flags |= CertVerifier::VERIFY_REV_CHECKING_REQUIRED_LOCAL_ANCHORS;
int rv = quic_request_.Request(
- destination, secure_quic, request_info_.privacy_mode, origin_host,
- request_info_.method, net_log_, io_callback_);
+ destination, secure_quic, request_info_.privacy_mode, flags,
+ origin_host, request_info_.method, net_log_, io_callback_);
if (rv == OK) {
using_existing_quic_session_ = true;
} else {
@@ -879,18 +904,6 @@
const bool expect_spdy = IsSpdyAlternative();
- if (proxy_info_.is_https()) {
- InitSSLConfig(proxy_info_.proxy_server().host_port_pair(),
- &proxy_ssl_config_,
- true /* is a proxy server */);
- // Disable revocation checking for HTTPS proxies since the revocation
- // requests are probably going to need to go through the proxy too.
- proxy_ssl_config_.rev_checking_enabled = false;
- }
- if (using_ssl_) {
- InitSSLConfig(server_, &server_ssl_config_, false /* not a proxy server */);
- }
-
base::WeakPtr<HttpServerProperties> http_server_properties =
session_->http_server_properties();
if (http_server_properties) {
diff --git a/net/quic/crypto/proof_verifier_chromium.cc b/net/quic/crypto/proof_verifier_chromium.cc
index b6ce232..90543cb 100644
--- a/net/quic/crypto/proof_verifier_chromium.cc
+++ b/net/quic/crypto/proof_verifier_chromium.cc
@@ -47,6 +47,7 @@
Job(ProofVerifierChromium* proof_verifier,
CertVerifier* cert_verifier,
TransportSecurityState* transport_security_state,
+ int cert_verify_flags,
const BoundNetLog& net_log);
// Starts the proof verification. If |QUIC_PENDING| is returned, then
@@ -94,6 +95,10 @@
// X509Certificate from a chain of DER encoded certificates.
scoped_refptr<X509Certificate> cert_;
+ // |cert_verify_flags| is bitwise OR'd of CertVerifier::VerifyFlags and it is
+ // passed to CertVerifier::Verify.
+ int cert_verify_flags_;
+
State next_state_;
BoundNetLog net_log_;
@@ -105,10 +110,12 @@
ProofVerifierChromium* proof_verifier,
CertVerifier* cert_verifier,
TransportSecurityState* transport_security_state,
+ int cert_verify_flags,
const BoundNetLog& net_log)
: proof_verifier_(proof_verifier),
verifier_(cert_verifier),
transport_security_state_(transport_security_state),
+ cert_verify_flags_(cert_verify_flags),
next_state_(STATE_NONE),
net_log_(net_log) {
}
@@ -222,13 +229,12 @@
int ProofVerifierChromium::Job::DoVerifyCert(int result) {
next_state_ = STATE_VERIFY_CERT_COMPLETE;
- int flags = 0;
- return verifier_->Verify(cert_.get(), hostname_, std::string(), flags,
- SSLConfigService::GetCRLSet().get(),
- &verify_details_->cert_verify_result,
- base::Bind(&ProofVerifierChromium::Job::OnIOComplete,
- base::Unretained(this)),
- &cert_verifier_request_, net_log_);
+ return verifier_->Verify(
+ cert_.get(), hostname_, std::string(), cert_verify_flags_,
+ SSLConfigService::GetCRLSet().get(), &verify_details_->cert_verify_result,
+ base::Bind(&ProofVerifierChromium::Job::OnIOComplete,
+ base::Unretained(this)),
+ &cert_verifier_request_, net_log_);
}
int ProofVerifierChromium::Job::DoVerifyCertComplete(int result) {
@@ -380,13 +386,12 @@
}
const ProofVerifyContextChromium* chromium_context =
reinterpret_cast<const ProofVerifyContextChromium*>(verify_context);
- scoped_ptr<Job> job(new Job(this,
- cert_verifier_,
- transport_security_state_,
+ scoped_ptr<Job> job(new Job(this, cert_verifier_, transport_security_state_,
+ chromium_context->cert_verify_flags,
chromium_context->net_log));
- QuicAsyncStatus status = job->VerifyProof(hostname, server_config, certs,
- signature, error_details,
- verify_details, callback);
+ QuicAsyncStatus status =
+ job->VerifyProof(hostname, server_config, certs, signature, error_details,
+ verify_details, callback);
if (status == QUIC_PENDING) {
active_jobs_.insert(job.release());
}
diff --git a/net/quic/crypto/proof_verifier_chromium.h b/net/quic/crypto/proof_verifier_chromium.h
index 83041791..7c0b069f 100644
--- a/net/quic/crypto/proof_verifier_chromium.h
+++ b/net/quic/crypto/proof_verifier_chromium.h
@@ -44,9 +44,10 @@
// ProofVerifierChromium needs in order to log correctly.
struct ProofVerifyContextChromium : public ProofVerifyContext {
public:
- explicit ProofVerifyContextChromium(const BoundNetLog& net_log)
- : net_log(net_log) {}
+ ProofVerifyContextChromium(int cert_verify_flags, const BoundNetLog& net_log)
+ : cert_verify_flags(cert_verify_flags), net_log(net_log) {}
+ int cert_verify_flags;
BoundNetLog net_log;
};
diff --git a/net/quic/quic_client_session.cc b/net/quic/quic_client_session.cc
index af83f82..57a5393 100644
--- a/net/quic/quic_client_session.cc
+++ b/net/quic/quic_client_session.cc
@@ -100,6 +100,7 @@
scoped_ptr<base::Value> NetLogQuicClientSessionCallback(
const QuicServerId* server_id,
+ int cert_verify_flags,
bool require_confirmation,
NetLogCaptureMode /* capture_mode */) {
scoped_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
@@ -109,6 +110,7 @@
dict->SetBoolean("privacy_mode",
server_id->privacy_mode() == PRIVACY_MODE_ENABLED);
dict->SetBoolean("require_confirmation", require_confirmation);
+ dict->SetInteger("cert_verify_flags", cert_verify_flags);
return dict.Pass();
}
@@ -161,6 +163,7 @@
TransportSecurityState* transport_security_state,
scoped_ptr<QuicServerInfo> server_info,
const QuicServerId& server_id,
+ int cert_verify_flags,
const QuicConfig& config,
QuicCryptoClientConfig* crypto_config,
const char* const connection_description,
@@ -183,17 +186,17 @@
going_away_(false),
weak_factory_(this) {
crypto_stream_.reset(
- crypto_client_stream_factory ?
- crypto_client_stream_factory->CreateQuicCryptoClientStream(
- server_id, this, crypto_config) :
- new QuicCryptoClientStream(server_id, this,
- new ProofVerifyContextChromium(net_log_),
- crypto_config));
+ crypto_client_stream_factory
+ ? crypto_client_stream_factory->CreateQuicCryptoClientStream(
+ server_id, this, crypto_config)
+ : new QuicCryptoClientStream(
+ server_id, this,
+ new ProofVerifyContextChromium(cert_verify_flags, net_log_),
+ crypto_config));
connection->set_debug_visitor(logger_.get());
net_log_.BeginEvent(NetLog::TYPE_QUIC_SESSION,
- base::Bind(NetLogQuicClientSessionCallback,
- &server_id,
- require_confirmation_));
+ base::Bind(NetLogQuicClientSessionCallback, &server_id,
+ cert_verify_flags, require_confirmation_));
IPEndPoint address;
if (socket && socket->GetLocalAddress(&address) == OK &&
address.GetFamily() == ADDRESS_FAMILY_IPV6) {
diff --git a/net/quic/quic_client_session.h b/net/quic/quic_client_session.h
index d8b35a8..414b906 100644
--- a/net/quic/quic_client_session.h
+++ b/net/quic/quic_client_session.h
@@ -99,6 +99,7 @@
TransportSecurityState* transport_security_state,
scoped_ptr<QuicServerInfo> server_info,
const QuicServerId& server_id,
+ int cert_verify_flags,
const QuicConfig& config,
QuicCryptoClientConfig* crypto_config,
const char* const connection_description,
diff --git a/net/quic/quic_client_session_test.cc b/net/quic/quic_client_session_test.cc
index 6bd6e28..921e7a6 100644
--- a/net/quic/quic_client_session_test.cc
+++ b/net/quic/quic_client_session_test.cc
@@ -55,6 +55,7 @@
kServerPort,
/*is_secure=*/false,
PRIVACY_MODE_DISABLED),
+ /*cert_verify_flags=*/0,
DefaultQuicConfig(),
&crypto_config_,
"CONNECTION_UNKNOWN",
diff --git a/net/quic/quic_crypto_client_stream.cc b/net/quic/quic_crypto_client_stream.cc
index d8463c5..84c994c1 100644
--- a/net/quic/quic_crypto_client_stream.cc
+++ b/net/quic/quic_crypto_client_stream.cc
@@ -419,14 +419,9 @@
verify_ok_ = false;
QuicAsyncStatus status = verifier->VerifyProof(
- server_id_.host(),
- cached->server_config(),
- cached->certs(),
- cached->signature(),
- verify_context_.get(),
- &verify_error_details_,
- &verify_details_,
- proof_verify_callback);
+ server_id_.host(), cached->server_config(), cached->certs(),
+ cached->signature(), verify_context_.get(), &verify_error_details_,
+ &verify_details_, proof_verify_callback);
switch (status) {
case QUIC_PENDING:
diff --git a/net/quic/quic_http_stream_test.cc b/net/quic/quic_http_stream_test.cc
index 639135c2..1fcbf27 100644
--- a/net/quic/quic_http_stream_test.cc
+++ b/net/quic/quic_http_stream_test.cc
@@ -213,9 +213,9 @@
&transport_security_state_, make_scoped_ptr((QuicServerInfo*)nullptr),
QuicServerId(kDefaultServerHostName, kDefaultServerPort,
/*is_secure=*/false, PRIVACY_MODE_DISABLED),
- DefaultQuicConfig(), &crypto_config_, "CONNECTION_UNKNOWN",
- base::TimeTicks::Now(), base::ThreadTaskRunnerHandle::Get().get(),
- nullptr));
+ /*cert_verify_flags=*/0, DefaultQuicConfig(), &crypto_config_,
+ "CONNECTION_UNKNOWN", base::TimeTicks::Now(),
+ base::ThreadTaskRunnerHandle::Get().get(), nullptr));
session_->Initialize();
session_->GetCryptoStream()->CryptoConnect();
EXPECT_TRUE(session_->IsCryptoHandshakeConfirmed());
diff --git a/net/quic/quic_stream_factory.cc b/net/quic/quic_stream_factory.cc
index 4602310..02b0b986 100644
--- a/net/quic/quic_stream_factory.cc
+++ b/net/quic/quic_stream_factory.cc
@@ -146,6 +146,7 @@
bool is_https,
bool was_alternative_service_recently_broken,
PrivacyMode privacy_mode,
+ int cert_verify_flags,
bool is_post,
QuicServerInfo* server_info,
const BoundNetLog& net_log);
@@ -198,6 +199,7 @@
QuicStreamFactory* factory_;
SingleRequestHostResolver host_resolver_;
QuicServerId server_id_;
+ int cert_verify_flags_;
// True if and only if server and origin have the same hostname.
bool server_and_origin_have_same_host_;
bool is_post_;
@@ -221,6 +223,7 @@
bool is_https,
bool was_alternative_service_recently_broken,
PrivacyMode privacy_mode,
+ int cert_verify_flags,
bool is_post,
QuicServerInfo* server_info,
const BoundNetLog& net_log)
@@ -228,6 +231,7 @@
factory_(factory),
host_resolver_(host_resolver),
server_id_(host_port_pair, is_https, privacy_mode),
+ cert_verify_flags_(cert_verify_flags),
server_and_origin_have_same_host_(server_and_origin_have_same_host),
is_post_(is_post),
was_alternative_service_recently_broken_(
@@ -247,6 +251,7 @@
factory_(factory),
host_resolver_(host_resolver), // unused
server_id_(server_id),
+ cert_verify_flags_(0), // unused
server_and_origin_have_same_host_(false), // unused
is_post_(false), // unused
was_alternative_service_recently_broken_(false), // unused
@@ -400,8 +405,9 @@
// If we are waiting to load server config from the disk cache, then start
// another job.
started_another_job_ = true;
- factory_->CreateAuxilaryJob(server_id_, server_and_origin_have_same_host_,
- is_post_, net_log_);
+ factory_->CreateAuxilaryJob(server_id_, cert_verify_flags_,
+ server_and_origin_have_same_host_, is_post_,
+ net_log_);
}
return rv;
}
@@ -430,9 +436,9 @@
int QuicStreamFactory::Job::DoConnect() {
io_state_ = STATE_CONNECT_COMPLETE;
- int rv =
- factory_->CreateSession(server_id_, server_info_.Pass(), address_list_,
- dns_resolution_end_time_, net_log_, &session_);
+ int rv = factory_->CreateSession(
+ server_id_, cert_verify_flags_, server_info_.Pass(), address_list_,
+ dns_resolution_end_time_, net_log_, &session_);
if (rv != OK) {
DCHECK(rv != ERR_IO_PENDING);
DCHECK(!session_);
@@ -496,6 +502,7 @@
int QuicStreamRequest::Request(const HostPortPair& host_port_pair,
bool is_https,
PrivacyMode privacy_mode,
+ int cert_verify_flags,
base::StringPiece origin_host,
base::StringPiece method,
const BoundNetLog& net_log,
@@ -505,8 +512,9 @@
DCHECK(factory_);
origin_host_ = origin_host.as_string();
privacy_mode_ = privacy_mode;
- int rv = factory_->Create(host_port_pair, is_https, privacy_mode, origin_host,
- method, net_log, this);
+ int rv =
+ factory_->Create(host_port_pair, is_https, privacy_mode,
+ cert_verify_flags, origin_host, method, net_log, this);
if (rv == ERR_IO_PENDING) {
host_port_pair_ = host_port_pair;
net_log_ = net_log;
@@ -635,6 +643,7 @@
int QuicStreamFactory::Create(const HostPortPair& host_port_pair,
bool is_https,
PrivacyMode privacy_mode,
+ int cert_verify_flags,
base::StringPiece origin_host,
base::StringPiece method,
const BoundNetLog& net_log,
@@ -681,10 +690,11 @@
}
bool server_and_origin_have_same_host = host_port_pair.host() == origin_host;
- scoped_ptr<Job> job(new Job(
- this, host_resolver_, host_port_pair, server_and_origin_have_same_host,
- is_https, WasQuicRecentlyBroken(server_id), privacy_mode,
- method == "POST" /* is_post */, quic_server_info, net_log));
+ scoped_ptr<Job> job(new Job(this, host_resolver_, host_port_pair,
+ server_and_origin_have_same_host, is_https,
+ WasQuicRecentlyBroken(server_id), privacy_mode,
+ cert_verify_flags, method == "POST" /* is_post */,
+ quic_server_info, net_log));
int rv = job->Run(base::Bind(&QuicStreamFactory::OnJobComplete,
base::Unretained(this), job.get()));
if (rv == ERR_IO_PENDING) {
@@ -705,13 +715,15 @@
}
void QuicStreamFactory::CreateAuxilaryJob(const QuicServerId server_id,
+ int cert_verify_flags,
bool server_and_origin_have_same_host,
bool is_post,
const BoundNetLog& net_log) {
- Job* aux_job = new Job(this, host_resolver_, server_id.host_port_pair(),
- server_and_origin_have_same_host, server_id.is_https(),
- WasQuicRecentlyBroken(server_id),
- server_id.privacy_mode(), is_post, nullptr, net_log);
+ Job* aux_job =
+ new Job(this, host_resolver_, server_id.host_port_pair(),
+ server_and_origin_have_same_host, server_id.is_https(),
+ WasQuicRecentlyBroken(server_id), server_id.privacy_mode(),
+ cert_verify_flags, is_post, nullptr, net_log);
active_jobs_[server_id].insert(aux_job);
task_runner_->PostTask(FROM_HERE,
base::Bind(&QuicStreamFactory::Job::RunAuxilaryJob,
@@ -1002,6 +1014,7 @@
}
int QuicStreamFactory::CreateSession(const QuicServerId& server_id,
+ int cert_verify_flags,
scoped_ptr<QuicServerInfo> server_info,
const AddressList& address_list,
base::TimeTicks dns_resolution_end_time,
@@ -1112,10 +1125,10 @@
*session = new QuicClientSession(
connection, socket.Pass(), this, quic_crypto_client_stream_factory_,
- transport_security_state_, server_info.Pass(), server_id, config,
- &crypto_config_, network_connection_.GetDescription(),
- dns_resolution_end_time, base::ThreadTaskRunnerHandle::Get().get(),
- net_log.net_log());
+ transport_security_state_, server_info.Pass(), server_id,
+ cert_verify_flags, config, &crypto_config_,
+ network_connection_.GetDescription(), dns_resolution_end_time,
+ base::ThreadTaskRunnerHandle::Get().get(), net_log.net_log());
all_sessions_[*session] = server_id; // owning pointer
diff --git a/net/quic/quic_stream_factory.h b/net/quic/quic_stream_factory.h
index 3027b59..80ce889 100644
--- a/net/quic/quic_stream_factory.h
+++ b/net/quic/quic_stream_factory.h
@@ -55,9 +55,12 @@
~QuicStreamRequest();
// For http, |is_https| is false.
+ // |cert_verify_flags| is bitwise OR'd of CertVerifier::VerifyFlags and it is
+ // passed to CertVerifier::Verify.
int Request(const HostPortPair& host_port_pair,
bool is_https,
PrivacyMode privacy_mode,
+ int cert_verify_flags,
base::StringPiece origin_host,
base::StringPiece method,
const BoundNetLog& net_log,
@@ -130,6 +133,7 @@
int Create(const HostPortPair& host_port_pair,
bool is_https,
PrivacyMode privacy_mode,
+ int cert_verify_flags,
base::StringPiece origin_host,
base::StringPiece method,
const BoundNetLog& net_log,
@@ -243,6 +247,7 @@
// Creates a job which doesn't wait for server config to be loaded from the
// disk cache. This job is started via a PostTask.
void CreateAuxilaryJob(const QuicServerId server_id,
+ int cert_verify_flags,
bool server_and_origin_have_same_host,
bool is_post,
const BoundNetLog& net_log);
@@ -256,6 +261,7 @@
bool HasActiveSession(const QuicServerId& server_id) const;
bool HasActiveJob(const QuicServerId& server_id) const;
int CreateSession(const QuicServerId& server_id,
+ int cert_verify_flags,
scoped_ptr<QuicServerInfo> quic_server_info,
const AddressList& address_list,
base::TimeTicks dns_resolution_end_time,
diff --git a/net/quic/quic_stream_factory_test.cc b/net/quic/quic_stream_factory_test.cc
index ae1e5d6..195e410f 100644
--- a/net/quic/quic_stream_factory_test.cc
+++ b/net/quic/quic_stream_factory_test.cc
@@ -270,8 +270,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(destination, is_https_, privacy_mode_,
- destination.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, destination.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
@@ -355,8 +355,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
@@ -369,9 +369,10 @@
// TODO(rtenneti): We should probably have a tests that HTTP and HTTPS result
// in streams on different sessions.
QuicStreamRequest request2(&factory_);
- EXPECT_EQ(OK, request2.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ EXPECT_EQ(OK,
+ request2.Request(host_port_pair_, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
stream = request2.ReleaseStream(); // Will reset stream 5.
stream.reset(); // Will reset stream 7.
@@ -395,8 +396,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(OK, request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
EXPECT_TRUE(stream.get());
@@ -422,8 +423,8 @@
// Posts require handshake confirmation, so this will return asynchronously.
EXPECT_EQ(ERR_IO_PENDING,
request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "POST", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "POST", net_log_, callback_.callback()));
// Confirm the handshake and verify that the stream is created.
crypto_client_stream_factory_.last_stream()->SendOnCryptoHandshakeEvent(
@@ -451,9 +452,9 @@
"192.168.0.1", "");
QuicStreamRequest request(&factory_);
- int rv = request.Request(host_port_pair_, is_https_, privacy_mode_,
- "different.host.example.com", "GET", net_log_,
- callback_.callback());
+ int rv = request.Request(
+ host_port_pair_, is_https_, privacy_mode_, /*cert_verify_flags=*/0,
+ "different.host.example.com", "GET", net_log_, callback_.callback());
// If server and origin have different hostnames, then handshake confirmation
// should be required, so Request will return asynchronously.
EXPECT_EQ(ERR_IO_PENDING, rv);
@@ -482,8 +483,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
@@ -492,8 +493,8 @@
QuicStreamRequest request2(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(host_port_pair_, !is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
stream = request2.ReleaseStream();
EXPECT_TRUE(stream.get());
@@ -527,16 +528,16 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(OK, request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
EXPECT_TRUE(stream.get());
TestCompletionCallback callback;
QuicStreamRequest request2(&factory_);
- EXPECT_EQ(OK,
- request2.Request(server2, is_https_, privacy_mode_, server2.host(),
- "GET", net_log_, callback.callback()));
+ EXPECT_EQ(OK, request2.Request(server2, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server2.host(), "GET",
+ net_log_, callback.callback()));
scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
EXPECT_TRUE(stream2.get());
@@ -572,16 +573,16 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(OK, request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
EXPECT_TRUE(stream.get());
TestCompletionCallback callback;
QuicStreamRequest request2(&factory_);
- EXPECT_EQ(OK,
- request2.Request(server2, is_https_, privacy_mode_, server2.host(),
- "GET", net_log_, callback.callback()));
+ EXPECT_EQ(OK, request2.Request(server2, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server2.host(), "GET",
+ net_log_, callback.callback()));
scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
EXPECT_TRUE(stream2.get());
@@ -616,16 +617,16 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(OK, request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
EXPECT_TRUE(stream.get());
TestCompletionCallback callback;
QuicStreamRequest request2(&factory_);
- EXPECT_EQ(OK,
- request2.Request(server2, is_https_, privacy_mode_, server2.host(),
- "GET", net_log_, callback.callback()));
+ EXPECT_EQ(OK, request2.Request(server2, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server2.host(), "GET",
+ net_log_, callback.callback()));
scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
EXPECT_TRUE(stream2.get());
@@ -638,9 +639,9 @@
TestCompletionCallback callback3;
QuicStreamRequest request3(&factory_);
- EXPECT_EQ(OK,
- request3.Request(server2, is_https_, privacy_mode_, server2.host(),
- "GET", net_log_, callback3.callback()));
+ EXPECT_EQ(OK, request3.Request(server2, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server2.host(), "GET",
+ net_log_, callback3.callback()));
scoped_ptr<QuicHttpStream> stream3 = request3.ReleaseStream();
EXPECT_TRUE(stream3.get());
@@ -673,17 +674,17 @@
QuicStreamRequest request(&factory_);
is_https_ = true;
- EXPECT_EQ(OK,
- request.Request(server1, is_https_, privacy_mode_, server1.host(),
- "GET", net_log_, callback_.callback()));
+ EXPECT_EQ(OK, request.Request(server1, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server1.host(), "GET",
+ net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
EXPECT_TRUE(stream.get());
TestCompletionCallback callback;
QuicStreamRequest request2(&factory_);
- EXPECT_EQ(OK,
- request2.Request(server2, is_https_, privacy_mode_, server2.host(),
- "GET", net_log_, callback_.callback()));
+ EXPECT_EQ(OK, request2.Request(server2, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server2.host(), "GET",
+ net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
EXPECT_TRUE(stream2.get());
@@ -722,17 +723,17 @@
QuicStreamRequest request(&factory_);
is_https_ = true;
- EXPECT_EQ(OK,
- request.Request(server1, is_https_, privacy_mode_, server1.host(),
- "GET", net_log_, callback_.callback()));
+ EXPECT_EQ(OK, request.Request(server1, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server1.host(), "GET",
+ net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
EXPECT_TRUE(stream.get());
TestCompletionCallback callback;
QuicStreamRequest request2(&factory_);
- EXPECT_EQ(OK,
- request2.Request(server2, is_https_, privacy_mode_, server2.host(),
- "GET", net_log_, callback_.callback()));
+ EXPECT_EQ(OK, request2.Request(server2, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server2.host(), "GET",
+ net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
EXPECT_TRUE(stream2.get());
@@ -782,15 +783,15 @@
QuicStreamRequest request1(&factory_);
is_https_ = true;
EXPECT_EQ(OK, request1.Request(alternative, is_https_, privacy_mode_,
- alternative.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, alternative.host(),
+ "GET", net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream1 = request1.ReleaseStream();
EXPECT_TRUE(stream1.get());
QuicStreamRequest request2(&factory_);
- int rv =
- request2.Request(alternative, is_https_, privacy_mode_, origin_host,
- "GET", net_log_, callback_.callback());
+ int rv = request2.Request(alternative, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, origin_host, "GET",
+ net_log_, callback_.callback());
if (valid) {
// Alternative service of origin to |alternative| should pool to session
// of |stream1| even if origin is different. Since only one
@@ -846,17 +847,17 @@
QuicStreamRequest request(&factory_);
is_https_ = true;
- EXPECT_EQ(OK,
- request.Request(server1, is_https_, privacy_mode_, server1.host(),
- "GET", net_log_, callback_.callback()));
+ EXPECT_EQ(OK, request.Request(server1, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server1.host(), "GET",
+ net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
EXPECT_TRUE(stream.get());
TestCompletionCallback callback;
QuicStreamRequest request2(&factory_);
- EXPECT_EQ(OK,
- request2.Request(server2, is_https_, privacy_mode_, server2.host(),
- "GET", net_log_, callback_.callback()));
+ EXPECT_EQ(OK, request2.Request(server2, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server2.host(), "GET",
+ net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
EXPECT_TRUE(stream2.get());
@@ -901,17 +902,17 @@
QuicStreamRequest request(&factory_);
is_https_ = true;
- EXPECT_EQ(OK,
- request.Request(server1, is_https_, privacy_mode_, server1.host(),
- "GET", net_log_, callback_.callback()));
+ EXPECT_EQ(OK, request.Request(server1, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server1.host(), "GET",
+ net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
EXPECT_TRUE(stream.get());
TestCompletionCallback callback;
QuicStreamRequest request2(&factory_);
- EXPECT_EQ(OK,
- request2.Request(server2, is_https_, privacy_mode_, server2.host(),
- "GET", net_log_, callback_.callback()));
+ EXPECT_EQ(OK, request2.Request(server2, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server2.host(), "GET",
+ net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
EXPECT_TRUE(stream2.get());
@@ -961,17 +962,17 @@
QuicStreamRequest request(&factory_);
is_https_ = true;
- EXPECT_EQ(OK,
- request.Request(server1, is_https_, privacy_mode_, server1.host(),
- "GET", net_log_, callback_.callback()));
+ EXPECT_EQ(OK, request.Request(server1, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server1.host(), "GET",
+ net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
EXPECT_TRUE(stream.get());
TestCompletionCallback callback;
QuicStreamRequest request2(&factory_);
- EXPECT_EQ(OK,
- request2.Request(server2, is_https_, privacy_mode_, server2.host(),
- "GET", net_log_, callback_.callback()));
+ EXPECT_EQ(OK, request2.Request(server2, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server2.host(), "GET",
+ net_log_, callback_.callback()));
scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
EXPECT_TRUE(stream2.get());
@@ -1000,8 +1001,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
@@ -1022,8 +1023,8 @@
QuicStreamRequest request2(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
scoped_ptr<QuicHttpStream> stream2 = request2.ReleaseStream();
EXPECT_TRUE(stream2.get());
@@ -1067,8 +1068,8 @@
for (size_t i = 0; i < kDefaultMaxStreamsPerConnection / 2; i++) {
QuicStreamRequest request(&factory_);
int rv = request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback());
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback());
if (i == 0) {
EXPECT_EQ(ERR_IO_PENDING, rv);
EXPECT_EQ(OK, callback_.WaitForResult());
@@ -1084,8 +1085,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(OK, request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- CompletionCallback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, CompletionCallback()));
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
EXPECT_TRUE(stream);
EXPECT_EQ(ERR_IO_PENDING, stream->InitializeStream(
@@ -1112,8 +1113,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(ERR_NAME_NOT_RESOLVED, callback_.WaitForResult());
@@ -1131,8 +1132,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(ERR_ADDRESS_IN_USE, callback_.WaitForResult());
@@ -1150,8 +1151,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
}
socket_data.StopAfter(1);
@@ -1213,8 +1214,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
@@ -1234,8 +1235,8 @@
QuicStreamRequest request2(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
stream = request2.ReleaseStream();
@@ -1270,8 +1271,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
@@ -1292,8 +1293,8 @@
QuicStreamRequest request2(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
stream = request2.ReleaseStream();
@@ -1328,8 +1329,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
@@ -1350,8 +1351,8 @@
QuicStreamRequest request2(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
stream = request2.ReleaseStream();
@@ -1386,8 +1387,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
scoped_ptr<QuicHttpStream> stream = request.ReleaseStream();
@@ -1408,8 +1409,8 @@
QuicStreamRequest request2(&factory_);
EXPECT_EQ(ERR_IO_PENDING,
request2.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(OK, callback_.WaitForResult());
stream = request2.ReleaseStream();
@@ -1519,8 +1520,8 @@
QuicServerId server_id(host_port_pair_, is_https_, privacy_mode_);
EXPECT_EQ(ERR_IO_PENDING,
request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
EXPECT_EQ(2u,
QuicStreamFactoryPeer::GetNumberOfActiveJobs(&factory_, server_id));
@@ -1554,8 +1555,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(OK, request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
// If we are waiting for disk cache, we would have posted a task. Verify that
// the CancelWaitForDataReady task hasn't been posted.
@@ -1611,8 +1612,8 @@
QuicStreamRequest request(&factory_);
EXPECT_EQ(OK, request.Request(host_port_pair_, is_https_, privacy_mode_,
- host_port_pair_.host(), "GET", net_log_,
- callback_.callback()));
+ /*cert_verify_flags=*/0, host_port_pair_.host(),
+ "GET", net_log_, callback_.callback()));
QuicClientSession* session = QuicStreamFactoryPeer::GetActiveSession(
&factory_, host_port_pair_, is_https_);
@@ -1648,9 +1649,9 @@
TestCompletionCallback callback2;
QuicStreamRequest request2(&factory_);
- EXPECT_EQ(OK,
- request2.Request(server2, is_https_, privacy_mode_, server2.host(),
- "GET", net_log_, callback2.callback()));
+ EXPECT_EQ(OK, request2.Request(server2, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server2.host(), "GET",
+ net_log_, callback2.callback()));
QuicClientSession* session2 =
QuicStreamFactoryPeer::GetActiveSession(&factory_, server2, is_https_);
@@ -1681,18 +1682,18 @@
TestCompletionCallback callback3;
QuicStreamRequest request3(&factory_);
- EXPECT_EQ(OK,
- request3.Request(server3, is_https_, privacy_mode_, server3.host(),
- "GET", net_log_, callback3.callback()));
+ EXPECT_EQ(OK, request3.Request(server3, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server3.host(), "GET",
+ net_log_, callback3.callback()));
QuicClientSession* session3 =
QuicStreamFactoryPeer::GetActiveSession(&factory_, server3, is_https_);
DVLOG(1) << "Create 4th session with packet loss and test IsQuicDisabled()";
TestCompletionCallback callback4;
QuicStreamRequest request4(&factory_);
- EXPECT_EQ(OK,
- request4.Request(server4, is_https_, privacy_mode_, server4.host(),
- "GET", net_log_, callback4.callback()));
+ EXPECT_EQ(OK, request4.Request(server4, is_https_, privacy_mode_,
+ /*cert_verify_flags=*/0, server4.host(), "GET",
+ net_log_, callback4.callback()));
QuicClientSession* session4 =
QuicStreamFactoryPeer::GetActiveSession(&factory_, server4, is_https_);
diff --git a/net/quic/test_tools/crypto_test_utils_chromium.cc b/net/quic/test_tools/crypto_test_utils_chromium.cc
index ba06264..a1df6b9 100644
--- a/net/quic/test_tools/crypto_test_utils_chromium.cc
+++ b/net/quic/test_tools/crypto_test_utils_chromium.cc
@@ -113,16 +113,15 @@
// static
ProofVerifier* CryptoTestUtils::ProofVerifierForTesting() {
- TestProofVerifierChromium* proof_verifier =
- new TestProofVerifierChromium(CertVerifier::CreateDefault(),
- new TransportSecurityState,
- "quic_root.crt");
+ TestProofVerifierChromium* proof_verifier = new TestProofVerifierChromium(
+ CertVerifier::CreateDefault(), new TransportSecurityState,
+ "quic_root.crt");
return proof_verifier;
}
// static
ProofVerifyContext* CryptoTestUtils::ProofVerifyContextForTesting() {
- return new ProofVerifyContextChromium(BoundNetLog());
+ return new ProofVerifyContextChromium(/*cert_verify_flags=*/0, BoundNetLog());
}
// static
diff --git a/net/quic/test_tools/mock_crypto_client_stream.cc b/net/quic/test_tools/mock_crypto_client_stream.cc
index f0f1dd0..2906939 100644
--- a/net/quic/test_tools/mock_crypto_client_stream.cc
+++ b/net/quic/test_tools/mock_crypto_client_stream.cc
@@ -20,8 +20,7 @@
QuicCryptoClientConfig* crypto_config,
HandshakeMode handshake_mode,
const ProofVerifyDetails* proof_verify_details)
- : QuicCryptoClientStream(server_id, session, verify_context,
- crypto_config),
+ : QuicCryptoClientStream(server_id, session, verify_context, crypto_config),
handshake_mode_(handshake_mode),
proof_verify_details_(proof_verify_details) {
}