| Index: net/quic/core/quic_crypto_server_stream.cc
|
| diff --git a/net/quic/core/quic_crypto_server_stream.cc b/net/quic/core/quic_crypto_server_stream.cc
|
| index bd87a2423c834a9bcf94d61d7696f77e18671243..0103f49d1c36ee407df6946f974328a9bf04ba05 100644
|
| --- a/net/quic/core/quic_crypto_server_stream.cc
|
| +++ b/net/quic/core/quic_crypto_server_stream.cc
|
| @@ -31,11 +31,12 @@ class QuicCryptoServerStream::ProcessClientHelloCallback
|
| const scoped_refptr<ValidateClientHelloResultCallback::Result>& result)
|
| : stream_(stream), result_(result) {}
|
|
|
| - void Run(
|
| - QuicErrorCode error,
|
| - const string& error_details,
|
| - std::unique_ptr<CryptoHandshakeMessage> message,
|
| - std::unique_ptr<DiversificationNonce> diversification_nonce) override {
|
| + void Run(QuicErrorCode error,
|
| + const string& error_details,
|
| + std::unique_ptr<CryptoHandshakeMessage> message,
|
| + std::unique_ptr<DiversificationNonce> diversification_nonce,
|
| + std::unique_ptr<net::ProofSource::Details> proof_source_details)
|
| + override {
|
| if (stream_ == nullptr) {
|
| return;
|
| }
|
| @@ -49,7 +50,7 @@ class QuicCryptoServerStream::ProcessClientHelloCallback
|
|
|
| stream_->FinishProcessingHandshakeMessageAfterProcessClientHello(
|
| *result_, error, error_details, std::move(message),
|
| - std::move(diversification_nonce));
|
| + std::move(diversification_nonce), std::move(proof_source_details));
|
| }
|
|
|
| void Cancel() { stream_ = nullptr; }
|
| @@ -190,7 +191,8 @@ void QuicCryptoServerStream::
|
| QuicErrorCode error,
|
| const string& error_details,
|
| std::unique_ptr<CryptoHandshakeMessage> reply,
|
| - std::unique_ptr<DiversificationNonce> diversification_nonce) {
|
| + std::unique_ptr<DiversificationNonce> diversification_nonce,
|
| + std::unique_ptr<ProofSource::Details> proof_source_details) {
|
| const CryptoHandshakeMessage& message = result.client_hello;
|
| if (error != QUIC_NO_ERROR) {
|
| CloseConnectionWithDetails(error, error_details);
|
| @@ -290,6 +292,7 @@ void QuicCryptoServerStream::SendServerConfigUpdate(
|
| std::unique_ptr<SendServerConfigUpdateCallback> cb(
|
| new SendServerConfigUpdateCallback(this));
|
| send_server_config_update_cb_ = cb.get();
|
| +
|
| crypto_config_->BuildServerConfigUpdateMessage(
|
| session()->connection()->version(), chlo_hash_,
|
| previous_source_address_tokens_,
|
| @@ -297,7 +300,11 @@ void QuicCryptoServerStream::SendServerConfigUpdate(
|
| session()->connection()->peer_address().address(),
|
| session()->connection()->clock(),
|
| session()->connection()->random_generator(), compressed_certs_cache_,
|
| - *crypto_negotiated_params_, cached_network_params, std::move(cb));
|
| + *crypto_negotiated_params_, cached_network_params,
|
| + (session()->config()->HasReceivedConnectionOptions()
|
| + ? session()->config()->ReceivedConnectionOptions()
|
| + : QuicTagVector()),
|
| + std::move(cb));
|
| return;
|
| }
|
|
|
| @@ -310,6 +317,9 @@ void QuicCryptoServerStream::SendServerConfigUpdate(
|
| session()->connection()->clock(),
|
| session()->connection()->random_generator(), compressed_certs_cache_,
|
| *crypto_negotiated_params_, cached_network_params,
|
| + (session()->config()->HasReceivedConnectionOptions()
|
| + ? session()->config()->ReceivedConnectionOptions()
|
| + : QuicTagVector()),
|
| &server_config_update_message)) {
|
| DVLOG(1) << "Server: Failed to build server config update (SCUP)!";
|
| return;
|
| @@ -438,7 +448,8 @@ void QuicCryptoServerStream::ProcessClientHello(
|
| string error_details;
|
| if (!helper_->CanAcceptClientHello(
|
| message, session()->connection()->self_address(), &error_details)) {
|
| - done_cb->Run(QUIC_HANDSHAKE_FAILED, error_details, nullptr, nullptr);
|
| + done_cb->Run(QUIC_HANDSHAKE_FAILED, error_details, nullptr, nullptr,
|
| + nullptr);
|
| return;
|
| }
|
|
|
|
|