Add client connection ID methods to quic_packets gfe-relnote: n/a, adds new currently unused methods PiperOrigin-RevId: 250704882 Change-Id: I0205e7638c229df39c1bb60661433c34adec5f84
diff --git a/quic/core/quic_packets.cc b/quic/core/quic_packets.cc index 57bda54..738cc6e 100644 --- a/quic/core/quic_packets.cc +++ b/quic/core/quic_packets.cc
@@ -27,6 +27,16 @@ return header.source_connection_id; } +QuicConnectionId GetClientConnectionIdAsRecipient( + const QuicPacketHeader& header, + Perspective perspective) { + DCHECK(GetQuicRestartFlag(quic_do_not_override_connection_id)); + if (perspective == Perspective::IS_CLIENT) { + return header.destination_connection_id; + } + return header.source_connection_id; +} + QuicConnectionId GetServerConnectionIdAsSender(const QuicPacketHeader& header, Perspective perspective) { if (perspective == Perspective::IS_CLIENT || @@ -48,6 +58,16 @@ return header.source_connection_id_included; } +QuicConnectionId GetClientConnectionIdAsSender(const QuicPacketHeader& header, + Perspective perspective) { + if (perspective == Perspective::IS_CLIENT || + !GetQuicRestartFlag(quic_do_not_override_connection_id)) { + return header.source_connection_id; + } + QUIC_RESTART_FLAG_COUNT_N(quic_do_not_override_connection_id, 3, 5); + return header.destination_connection_id; +} + QuicConnectionIdIncluded GetClientConnectionIdIncludedAsSender( const QuicPacketHeader& header, Perspective perspective) {
diff --git a/quic/core/quic_packets.h b/quic/core/quic_packets.h index d3c2600..b1964e7 100644 --- a/quic/core/quic_packets.h +++ b/quic/core/quic_packets.h
@@ -41,6 +41,12 @@ // Returns the destination connection ID of |header| when |perspective| is // client, and the source connection ID when |perspective| is server. QUIC_EXPORT_PRIVATE QuicConnectionId +GetClientConnectionIdAsRecipient(const QuicPacketHeader& header, + Perspective perspective); + +// Returns the destination connection ID of |header| when |perspective| is +// client, and the source connection ID when |perspective| is server. +QUIC_EXPORT_PRIVATE QuicConnectionId GetServerConnectionIdAsSender(const QuicPacketHeader& header, Perspective perspective); @@ -51,6 +57,12 @@ GetServerConnectionIdIncludedAsSender(const QuicPacketHeader& header, Perspective perspective); +// Returns the destination connection ID of |header| when |perspective| is +// server, and the source connection ID when |perspective| is client. +QUIC_EXPORT_PRIVATE QuicConnectionId +GetClientConnectionIdAsSender(const QuicPacketHeader& header, + Perspective perspective); + // Returns the destination connection ID included of |header| when |perspective| // is server, and the source connection ID included when |perspective| is // client.
diff --git a/quic/core/quic_packets_test.cc b/quic/core/quic_packets_test.cc index 9ea369e..be35d20 100644 --- a/quic/core/quic_packets_test.cc +++ b/quic/core/quic_packets_test.cc
@@ -86,6 +86,31 @@ header, Perspective::IS_CLIENT)); } +TEST_F(QuicPacketsTest, GetClientConnectionIdAsRecipient) { + SetQuicRestartFlag(quic_do_not_override_connection_id, true); + QuicPacketHeader header = CreateFakePacketHeader(); + EXPECT_EQ(TestConnectionId(2), + GetClientConnectionIdAsRecipient(header, Perspective::IS_SERVER)); + EXPECT_EQ(TestConnectionId(1), + GetClientConnectionIdAsRecipient(header, Perspective::IS_CLIENT)); +} + +TEST_F(QuicPacketsTest, GetClientConnectionIdAsSender) { + QuicPacketHeader header = CreateFakePacketHeader(); + if (!GetQuicRestartFlag(quic_do_not_override_connection_id)) { + EXPECT_EQ(TestConnectionId(2), + GetClientConnectionIdAsSender(header, Perspective::IS_SERVER)); + EXPECT_EQ(TestConnectionId(2), + GetClientConnectionIdAsSender(header, Perspective::IS_CLIENT)); + return; + } + + EXPECT_EQ(TestConnectionId(1), + GetClientConnectionIdAsSender(header, Perspective::IS_SERVER)); + EXPECT_EQ(TestConnectionId(2), + GetClientConnectionIdAsSender(header, Perspective::IS_CLIENT)); +} + } // namespace } // namespace test } // namespace quic