Support IETF RETRY from client
This CL parses the retry token, and updates our connection ID and crypters. Server-side support will come in a subsequent CL which will also add end to end tests.
gfe-relnote: Support IETF Retry packets from client in v99, protected by disabled v99 flag
PiperOrigin-RevId: 246911895
Change-Id: Icd5ecd22190fd18ad42882a66c3aa470640ce223
diff --git a/quic/core/quic_connection.h b/quic/core/quic_connection.h
index b28ece5..ea12d71 100644
--- a/quic/core/quic_connection.h
+++ b/quic/core/quic_connection.h
@@ -481,6 +481,9 @@
void OnPublicResetPacket(const QuicPublicResetPacket& packet) override;
void OnVersionNegotiationPacket(
const QuicVersionNegotiationPacket& packet) override;
+ void OnRetryPacket(QuicConnectionId original_connection_id,
+ QuicConnectionId new_connection_id,
+ QuicStringPiece retry_token) override;
bool OnUnauthenticatedPublicHeader(const QuicPacketHeader& header) override;
bool OnUnauthenticatedHeader(const QuicPacketHeader& header) override;
void OnDecryptedPacket(EncryptionLevel level) override;
@@ -1508,6 +1511,9 @@
// needs to be sent.
bool send_ack_when_on_can_write_;
+ // Indicates whether a RETRY packet has been parsed.
+ bool retry_has_been_parsed_;
+
// Latched value of quic_validate_packet_number_post_decryption.
const bool validate_packet_number_post_decryption_;