Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(471)

Unified Diff: net/quic/core/quic_crypto_server_stream.cc

Issue 2875333002: Landing Recent QUIC changes until Mon May 8 21:42:46 2017 +0000 (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/quic/core/quic_crypto_server_stream.h ('k') | net/quic/core/quic_crypto_server_stream_test.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 dfd0c4ac4dbed2301fe7dd53a3410b3fe98c2dbe..6912d2f88364c80a14ac237c6cc1392033d90f94 100644
--- a/net/quic/core/quic_crypto_server_stream.cc
+++ b/net/quic/core/quic_crypto_server_stream.cc
@@ -97,6 +97,7 @@ QuicCryptoServerStream::QuicCryptoServerStream(
use_stateless_rejects_if_peer_supported_(
use_stateless_rejects_if_peer_supported),
peer_supports_stateless_rejects_(false),
+ zero_rtt_attempted_(false),
chlo_packet_size_(0),
validate_client_hello_cb_(nullptr),
process_client_hello_cb_(nullptr) {
@@ -161,7 +162,7 @@ void QuicCryptoServerStream::OnHandshakeMessage(
DCHECK(process_client_hello_cb_ == nullptr);
validate_client_hello_cb_ = cb.get();
crypto_config_->ValidateClientHello(
- message, session()->connection()->peer_address().host(),
+ message, GetClientAddress().host(),
session()->connection()->self_address(), version(),
session()->connection()->clock(), signed_config_, std::move(cb));
}
@@ -300,8 +301,7 @@ void QuicCryptoServerStream::SendServerConfigUpdate(
crypto_config_->BuildServerConfigUpdateMessage(
session()->connection()->version(), chlo_hash_,
previous_source_address_tokens_, session()->connection()->self_address(),
- session()->connection()->peer_address().host(),
- session()->connection()->clock(),
+ GetClientAddress().host(), session()->connection()->clock(),
session()->connection()->random_generator(), compressed_certs_cache_,
*crypto_negotiated_params_, cached_network_params,
(session()->config()->HasReceivedConnectionOptions()
@@ -374,6 +374,10 @@ bool QuicCryptoServerStream::PeerSupportsStatelessRejects() const {
return peer_supports_stateless_rejects_;
}
+bool QuicCryptoServerStream::ZeroRttAttempted() const {
+ return zero_rtt_attempted_;
+}
+
void QuicCryptoServerStream::SetPeerSupportsStatelessRejects(
bool peer_supports_stateless_rejects) {
peer_supports_stateless_rejects_ = peer_supports_stateless_rejects;
@@ -414,10 +418,16 @@ void QuicCryptoServerStream::ProcessClientHello(
nullptr);
return;
}
-
if (!result->info.server_nonce.empty()) {
++num_handshake_messages_with_server_nonces_;
}
+
+ if (num_handshake_messages_ == 1) {
+ // Client attempts zero RTT handshake by sending a non-inchoate CHLO.
+ QuicStringPiece public_value;
+ zero_rtt_attempted_ = message.GetStringPiece(kPUBS, &public_value);
+ }
+
// Store the bandwidth estimate from the client.
if (result->cached_network_params.bandwidth_estimate_bytes_per_second() > 0) {
previous_cached_network_params_.reset(
@@ -433,7 +443,7 @@ void QuicCryptoServerStream::ProcessClientHello(
GenerateConnectionIdForReject(use_stateless_rejects_in_crypto_config);
crypto_config_->ProcessClientHello(
result, /*reject_only=*/false, connection->connection_id(),
- connection->self_address(), connection->peer_address(), version(),
+ connection->self_address(), GetClientAddress(), version(),
connection->supported_versions(), use_stateless_rejects_in_crypto_config,
server_designated_connection_id, connection->clock(),
connection->random_generator(), compressed_certs_cache_,
@@ -470,4 +480,8 @@ QuicConnectionId QuicCryptoServerStream::GenerateConnectionIdForReject(
session()->connection()->connection_id());
}
+const QuicSocketAddress QuicCryptoServerStream::GetClientAddress() {
+ return session()->connection()->peer_address();
+}
+
} // namespace net
« no previous file with comments | « net/quic/core/quic_crypto_server_stream.h ('k') | net/quic/core/quic_crypto_server_stream_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698