gfe-relnote: Remove the use of QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT. PiperOrigin-RevId: 251847850 Change-Id: I0018b01d89e52a75d3259a22c6c5bfaac87b18b9
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc index 83e6f04..5e8e100 100644 --- a/quic/core/quic_connection.cc +++ b/quic/core/quic_connection.cc
@@ -3144,14 +3144,8 @@ SendConnectionClosePacket(error, error_details); } - ConnectionCloseSource source = ConnectionCloseSource::FROM_SELF; - if (perspective_ == Perspective::IS_CLIENT && - error == QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT) { - // Regard stateless rejected connection as closed by server. - source = ConnectionCloseSource::FROM_PEER; - } - - TearDownLocalConnectionState(error, error_details, source); + TearDownLocalConnectionState(error, error_details, + ConnectionCloseSource::FROM_SELF); } void QuicConnection::SendConnectionClosePacket(QuicErrorCode error,
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc index b7c45d5..a2612b9 100644 --- a/quic/core/quic_connection_test.cc +++ b/quic/core/quic_connection_test.cc
@@ -7685,17 +7685,6 @@ EXPECT_TRUE(writer_->ack_frames().empty()); } -TEST_P(QuicConnectionTest, CloseConnectionForStatelessReject) { - std::string error_details("stateless reject"); - EXPECT_CALL(visitor_, OnConnectionClosed( - QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT, - error_details, ConnectionCloseSource::FROM_PEER)); - connection_.set_perspective(Perspective::IS_CLIENT); - connection_.CloseConnection(QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT, - error_details, - ConnectionCloseBehavior::SILENT_CLOSE); -} - // Regression test for b/63620844. TEST_P(QuicConnectionTest, FailedToWriteHandshakePacket) { SimulateNextPacketTooLarge();
diff --git a/quic/core/quic_dispatcher.cc b/quic/core/quic_dispatcher.cc index 7228af3..8a91711 100644 --- a/quic/core/quic_dispatcher.cc +++ b/quic/core/quic_dispatcher.cc
@@ -623,13 +623,8 @@ void QuicDispatcher::CleanUpSession(SessionMap::iterator it, QuicConnection* connection, - bool should_close_statelessly, ConnectionCloseSource source) { write_blocked_list_.erase(connection); - if (should_close_statelessly) { - DCHECK(connection->termination_packets() != nullptr && - !connection->termination_packets()->empty()); - } QuicTimeWaitListManager::TimeWaitAction action = QuicTimeWaitListManager::SEND_STATELESS_RESET; if (connection->termination_packets() != nullptr && @@ -762,9 +757,7 @@ } closed_session_list_.push_back(std::move(it->second)); } - const bool should_close_statelessly = - (error == QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT); - CleanUpSession(it, connection, should_close_statelessly, source); + CleanUpSession(it, connection, source); } void QuicDispatcher::OnWriteBlocked(
diff --git a/quic/core/quic_dispatcher.h b/quic/core/quic_dispatcher.h index 790d4d2..1a023e0 100644 --- a/quic/core/quic_dispatcher.h +++ b/quic/core/quic_dispatcher.h
@@ -324,11 +324,9 @@ QuicConnectionId server_connection_id); // Removes the session from the session map and write blocked list, and adds - // the ConnectionId to the time-wait list. If |session_closed_statelessly| is - // true, any future packets for the ConnectionId will be black-holed. + // the ConnectionId to the time-wait list. virtual void CleanUpSession(SessionMap::iterator it, QuicConnection* connection, - bool session_closed_statelessly, ConnectionCloseSource source); void StopAcceptingNewConnections();
diff --git a/quic/core/quic_error_codes.cc b/quic/core/quic_error_codes.cc index 86c0896..cf95e1d 100644 --- a/quic/core/quic_error_codes.cc +++ b/quic/core/quic_error_codes.cc
@@ -71,7 +71,6 @@ RETURN_STRING_LITERAL(QUIC_CRYPTO_MESSAGE_AFTER_HANDSHAKE_COMPLETE); RETURN_STRING_LITERAL(QUIC_CRYPTO_INTERNAL_ERROR); RETURN_STRING_LITERAL(QUIC_CRYPTO_VERSION_NOT_SUPPORTED); - RETURN_STRING_LITERAL(QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT); RETURN_STRING_LITERAL(QUIC_CRYPTO_NO_SUPPORT); RETURN_STRING_LITERAL(QUIC_INVALID_CRYPTO_MESSAGE_TYPE); RETURN_STRING_LITERAL(QUIC_INVALID_CRYPTO_MESSAGE_PARAMETER);
diff --git a/quic/core/quic_error_codes.h b/quic/core/quic_error_codes.h index c8259f7..3de93f6 100644 --- a/quic/core/quic_error_codes.h +++ b/quic/core/quic_error_codes.h
@@ -216,8 +216,8 @@ QUIC_CRYPTO_INTERNAL_ERROR = 38, // A crypto handshake message specified an unsupported version. QUIC_CRYPTO_VERSION_NOT_SUPPORTED = 39, - // A crypto handshake message resulted in a stateless reject. - QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT = 72, + // (Deprecated) A crypto handshake message resulted in a stateless reject. + // QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT = 72, // There was no intersection between the crypto primitives supported by the // peer and ourselves. QUIC_CRYPTO_NO_SUPPORT = 40,
diff --git a/quic/tools/quic_client_base.cc b/quic/tools/quic_client_base.cc index fbda267..eb4ac14 100644 --- a/quic/tools/quic_client_base.cc +++ b/quic/tools/quic_client_base.cc
@@ -83,21 +83,12 @@ } ParsedQuicVersion version = UnsupportedQuicVersion(); if (session() != nullptr && - session()->error() != QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT && !CanReconnectWithDifferentVersion(&version)) { - // We've successfully created a session but we're not connected, and there - // is no stateless reject to recover from and cannot try to reconnect with - // different version. Give up trying. + // We've successfully created a session but we're not connected, and we + // cannot reconnect with a different version. Give up trying. break; } } - if (!connected() && - GetNumSentClientHellos() > QuicCryptoClientStream::kMaxClientHellos && - session() != nullptr && - session()->error() == QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT) { - // The overall connection failed due too many stateless rejects. - set_connection_error(QUIC_CRYPTO_TOO_MANY_REJECTS); - } return session()->connection()->connected(); } @@ -109,12 +100,9 @@ const bool can_reconnect_with_different_version = CanReconnectWithDifferentVersion(&mutual_version); if (connected_or_attempting_connect()) { - // If the last error was not a stateless reject, then the queued up data - // does not need to be resent. - // Keep queued up data if client can try to connect with a different + // Clear queued up data if client can not try to connect with a different // version. - if (session()->error() != QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT && - !can_reconnect_with_different_version) { + if (!can_reconnect_with_different_version) { ClearDataToResend(); } // Before we destroy the last session and create a new one, gather its stats @@ -176,11 +164,7 @@ DCHECK(session() != nullptr); ParsedQuicVersion version = UnsupportedQuicVersion(); - if (!connected() && - - CanReconnectWithDifferentVersion(&version)) { - DCHECK_NE(session()->error(), QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT); - + if (!connected() && CanReconnectWithDifferentVersion(&version)) { QUIC_DLOG(INFO) << "Can reconnect with version: " << version << ", attempting to reconnect."; @@ -276,9 +260,6 @@ void QuicClientBase::UpdateStats() { num_sent_client_hellos_ += GetNumSentClientHellosFromSession(); - if (session()->error() == QUIC_CRYPTO_HANDSHAKE_STATELESS_REJECT) { - ++num_stateless_rejects_received_; - } } int QuicClientBase::GetNumReceivedServerConfigUpdates() {
diff --git a/quic/tools/quic_client_base.h b/quic/tools/quic_client_base.h index 134404b..13f7c94 100644 --- a/quic/tools/quic_client_base.h +++ b/quic/tools/quic_client_base.h
@@ -331,9 +331,7 @@ // The number of stateless rejects received during the current/latest // connection. - // TODO(jokulik): Consider some consistent naming scheme (or other) for member - // variables that are kept per-request, per-connection, and over the client's - // lifetime. + // TODO(wub): Remove this. int num_stateless_rejects_received_; // The number of hellos sent during the current/latest connection.