| Index: net/quic/crypto/quic_crypto_server_config.cc
|
| diff --git a/net/quic/crypto/quic_crypto_server_config.cc b/net/quic/crypto/quic_crypto_server_config.cc
|
| index 8481a0ed0d823deaf34fbb857e31e58ee55e2e96..ec123a606713aa324a3d9219e3c0498351f2ee6e 100644
|
| --- a/net/quic/crypto/quic_crypto_server_config.cc
|
| +++ b/net/quic/crypto/quic_crypto_server_config.cc
|
| @@ -120,7 +120,6 @@ class VerifyNonceIsValidAndUniqueCallback
|
| InsertStatus nonce_error) override {
|
| DVLOG(1) << "Using client nonce, unique: " << nonce_is_valid_and_unique
|
| << " nonce_error: " << nonce_error;
|
| - result_->info.unique = nonce_is_valid_and_unique;
|
| if (!nonce_is_valid_and_unique) {
|
| HandshakeFailureReason client_nonce_error;
|
| switch (nonce_error) {
|
| @@ -168,12 +167,7 @@ const char QuicCryptoServerConfig::TESTING[] = "secret string for testing";
|
|
|
| ClientHelloInfo::ClientHelloInfo(const IPAddressNumber& in_client_ip,
|
| QuicWallTime in_now)
|
| - : client_ip(in_client_ip),
|
| - now(in_now),
|
| - valid_source_address_token(false),
|
| - client_nonce_well_formed(false),
|
| - unique(false) {
|
| -}
|
| + : client_ip(in_client_ip), now(in_now), valid_source_address_token(false) {}
|
|
|
| ClientHelloInfo::~ClientHelloInfo() {
|
| }
|
| @@ -617,10 +611,7 @@ QuicErrorCode QuicCryptoServerConfig::ProcessClientHello(
|
| return QUIC_HANDSHAKE_FAILED;
|
| }
|
|
|
| - if (!info.valid_source_address_token ||
|
| - !info.client_nonce_well_formed ||
|
| - !info.unique ||
|
| - !requested_config.get()) {
|
| + if (!info.reject_reasons.empty() || !requested_config.get()) {
|
| BuildRejection(*primary_config, client_hello, info,
|
| validate_chlo_result.cached_network_params,
|
| use_stateless_rejects, server_designated_connection_id, rand,
|
| @@ -1032,10 +1023,8 @@ void QuicCryptoServerConfig::EvaluateClientHello(
|
| }
|
| }
|
|
|
| - if (client_hello.GetStringPiece(kNONC, &info->client_nonce) &&
|
| - info->client_nonce.size() == kNonceSize) {
|
| - info->client_nonce_well_formed = true;
|
| - } else {
|
| + if (!client_hello.GetStringPiece(kNONC, &info->client_nonce) ||
|
| + info->client_nonce.size() != kNonceSize) {
|
| info->reject_reasons.push_back(CLIENT_NONCE_INVALID_FAILURE);
|
| // Invalid client nonce.
|
| DVLOG(1) << "Invalid client nonce.";
|
| @@ -1047,9 +1036,6 @@ void QuicCryptoServerConfig::EvaluateClientHello(
|
| }
|
|
|
| if (!replay_protection_) {
|
| - if (!found_error) {
|
| - info->unique = true;
|
| - }
|
| DVLOG(1) << "No replay protection.";
|
| helper.ValidationComplete(QUIC_NO_ERROR, "");
|
| return;
|
| @@ -1060,13 +1046,11 @@ void QuicCryptoServerConfig::EvaluateClientHello(
|
| // If the server nonce is present, use it to establish uniqueness.
|
| HandshakeFailureReason server_nonce_error =
|
| ValidateServerNonce(info->server_nonce, info->now);
|
| - if (server_nonce_error == HANDSHAKE_OK) {
|
| - info->unique = true;
|
| - } else {
|
| + bool is_unique = server_nonce_error == HANDSHAKE_OK;
|
| + if (!is_unique) {
|
| info->reject_reasons.push_back(server_nonce_error);
|
| - info->unique = false;
|
| }
|
| - DVLOG(1) << "Using server nonce, unique: " << info->unique;
|
| + DVLOG(1) << "Using server nonce, unique: " << is_unique;
|
| helper.ValidationComplete(QUIC_NO_ERROR, "");
|
| return;
|
| }
|
|
|