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