Pass early data reject reason to debug_visitor. This way we can add this information in net log PiperOrigin-RevId: 331597899 Change-Id: I90455ee1bfa5ade67f36c61ccc1130db1493bf58
diff --git a/quic/core/handshaker_delegate_interface.h b/quic/core/handshaker_delegate_interface.h index d72471f..5103509 100644 --- a/quic/core/handshaker_delegate_interface.h +++ b/quic/core/handshaker_delegate_interface.h
@@ -58,7 +58,7 @@ // Called when 0-RTT data is rejected by the server. This is only called in // TLS handshakes and only called on clients. - virtual void OnZeroRttRejected() = 0; + virtual void OnZeroRttRejected(int reason) = 0; // Fills in |params| with values from the delegate's QuicConfig. // Returns whether the operation succeeded.
diff --git a/quic/core/http/end_to_end_test.cc b/quic/core/http/end_to_end_test.cc index 0630d80..637edcf 100644 --- a/quic/core/http/end_to_end_test.cc +++ b/quic/core/http/end_to_end_test.cc
@@ -1710,7 +1710,7 @@ server_writer_ = new PacketDroppingTestWriter(); StartServer(); - ON_CALL(visitor, OnZeroRttRejected()).WillByDefault(Invoke([this]() { + ON_CALL(visitor, OnZeroRttRejected(_)).WillByDefault(Invoke([this]() { EXPECT_FALSE(GetClientSession()->IsEncryptionEstablished()); // Trigger an OnCanWrite() to make sure no unencrypted data will be written. GetClientSession()->OnCanWrite();
diff --git a/quic/core/quic_connection.cc b/quic/core/quic_connection.cc index fc6ed3d..7eb0202 100644 --- a/quic/core/quic_connection.cc +++ b/quic/core/quic_connection.cc
@@ -2482,10 +2482,10 @@ } } -void QuicConnection::MarkZeroRttPacketsForRetransmission() { +void QuicConnection::MarkZeroRttPacketsForRetransmission(int reject_reason) { sent_packet_manager_.MarkZeroRttPacketsForRetransmission(); if (debug_visitor_ != nullptr && version().UsesTls()) { - debug_visitor_->OnZeroRttRejected(); + debug_visitor_->OnZeroRttRejected(reject_reason); } }
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h index 77b32dc..4e2c507 100644 --- a/quic/core/quic_connection.h +++ b/quic/core/quic_connection.h
@@ -364,7 +364,7 @@ const TransportParameters& /*transport_parameters*/) {} // Called for QUIC+TLS versions when 0-RTT is rejected. - virtual void OnZeroRttRejected() {} + virtual void OnZeroRttRejected(int /*reject_reason*/) {} }; class QUIC_EXPORT_PRIVATE QuicConnectionHelperInterface { @@ -719,8 +719,8 @@ // Mark all sent 0-RTT encrypted packets for retransmission. Called when new // 0-RTT or 1-RTT key is available in gQUIC, or when 0-RTT is rejected in IETF - // QUIC. - void MarkZeroRttPacketsForRetransmission(); + // QUIC. |reject_reason| is used in TLS-QUIC to log why 0-RTT was rejected. + void MarkZeroRttPacketsForRetransmission(int reject_reason); // Calls |sent_packet_manager_|'s NeuterUnencryptedPackets. Used when the // connection becomes forward secure and hasn't received acks for all packets.
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc index ef15691..1070c77 100644 --- a/quic/core/quic_connection_test.cc +++ b/quic/core/quic_connection_test.cc
@@ -4574,7 +4574,7 @@ SendStreamDataToPeer(2, "bar", 0, NO_FIN, nullptr); EXPECT_FALSE(notifier_.HasLostStreamData()); - connection_.MarkZeroRttPacketsForRetransmission(); + connection_.MarkZeroRttPacketsForRetransmission(0); EXPECT_TRUE(notifier_.HasLostStreamData()); }
diff --git a/quic/core/quic_session.cc b/quic/core/quic_session.cc index 56a7c64..ec17c19 100644 --- a/quic/core/quic_session.cc +++ b/quic/core/quic_session.cc
@@ -1552,7 +1552,7 @@ if (perspective() == Perspective::IS_CLIENT) { // Retransmit old 0-RTT data (if any) with the new 0-RTT keys, since // they can't be decrypted by the server. - connection_->MarkZeroRttPacketsForRetransmission(); + connection_->MarkZeroRttPacketsForRetransmission(0); // Given any streams blocked by encryption a chance to write. OnCanWrite(); } @@ -1626,9 +1626,9 @@ connection()->OnHandshakeComplete(); } -void QuicSession::OnZeroRttRejected() { +void QuicSession::OnZeroRttRejected(int reason) { was_zero_rtt_rejected_ = true; - connection_->MarkZeroRttPacketsForRetransmission(); + connection_->MarkZeroRttPacketsForRetransmission(reason); if (connection_->encryption_level() == ENCRYPTION_FORWARD_SECURE) { QUIC_BUG << "1-RTT keys already available when 0-RTT is rejected."; connection_->CloseConnection(
diff --git a/quic/core/quic_session.h b/quic/core/quic_session.h index 6f83430..302a47a 100644 --- a/quic/core/quic_session.h +++ b/quic/core/quic_session.h
@@ -262,7 +262,7 @@ void DiscardOldEncryptionKey(EncryptionLevel level) override; void NeuterUnencryptedData() override; void NeuterHandshakeData() override; - void OnZeroRttRejected() override; + void OnZeroRttRejected(int reason) override; bool FillTransportParameters(TransportParameters* params) override; QuicErrorCode ProcessTransportParameters(const TransportParameters& params, bool is_resumption,
diff --git a/quic/core/tls_client_handshaker.cc b/quic/core/tls_client_handshaker.cc index fa19005..d11437d 100644 --- a/quic/core/tls_client_handshaker.cc +++ b/quic/core/tls_client_handshaker.cc
@@ -526,7 +526,7 @@ DCHECK(session_cache_); // Disable encrytion to block outgoing data until 1-RTT keys are available. encryption_established_ = false; - handshaker_delegate()->OnZeroRttRejected(); + handshaker_delegate()->OnZeroRttRejected(EarlyDataReason()); SSL_reset_early_data_reject(ssl()); session_cache_->ClearEarlyData(server_id_); AdvanceHandshake();
diff --git a/quic/test_tools/quic_test_utils.h b/quic/test_tools/quic_test_utils.h index c37ee4c..cf9969f 100644 --- a/quic/test_tools/quic_test_utils.h +++ b/quic/test_tools/quic_test_utils.h
@@ -1466,7 +1466,7 @@ (const TransportParameters&), (override)); - MOCK_METHOD(void, OnZeroRttRejected, (), (override)); + MOCK_METHOD(void, OnZeroRttRejected, (int), (override)); }; class MockReceivedPacketManager : public QuicReceivedPacketManager {