Project import generated by Copybara.
PiperOrigin-RevId: 248265360
Change-Id: Ib862f0deab43c6175c46799be27bb6d2589f610f
diff --git a/quic/core/quic_connection_test.cc b/quic/core/quic_connection_test.cc
index 82c493c..0bae7d5 100644
--- a/quic/core/quic_connection_test.cc
+++ b/quic/core/quic_connection_test.cc
@@ -1107,7 +1107,8 @@
header.destination_connection_id = connection_id_;
header.packet_number_length = packet_number_length_;
header.destination_connection_id_included = connection_id_included_;
- if (peer_framer_.transport_version() > QUIC_VERSION_43 &&
+ if ((peer_framer_.transport_version() > QUIC_VERSION_43 ||
+ GetQuicRestartFlag(quic_do_not_override_connection_id)) &&
peer_framer_.perspective() == Perspective::IS_SERVER) {
header.destination_connection_id_included = CONNECTION_ID_ABSENT;
}
@@ -1116,10 +1117,14 @@
header.version_flag = true;
header.retry_token_length_length = VARIABLE_LENGTH_INTEGER_LENGTH_1;
header.length_length = VARIABLE_LENGTH_INTEGER_LENGTH_2;
- if (peer_framer_.perspective() == Perspective::IS_SERVER) {
- header.source_connection_id = connection_id_;
- header.source_connection_id_included = CONNECTION_ID_PRESENT;
- }
+ }
+ if ((GetQuicRestartFlag(quic_do_not_override_connection_id) ||
+ (level == ENCRYPTION_INITIAL &&
+ peer_framer_.version().KnowsWhichDecrypterToUse())) &&
+ header.version_flag &&
+ peer_framer_.perspective() == Perspective::IS_SERVER) {
+ header.source_connection_id = connection_id_;
+ header.source_connection_id_included = CONNECTION_ID_PRESENT;
}
header.packet_number = QuicPacketNumber(number);
QuicFrames frames;
@@ -1316,9 +1321,15 @@
}
// Set connection_id to peer's in memory representation as this data packet
// is created by peer_framer.
- header.destination_connection_id = connection_id_;
- header.packet_number_length = packet_number_length_;
- header.destination_connection_id_included = connection_id_included_;
+ if (GetQuicRestartFlag(quic_do_not_override_connection_id) &&
+ peer_framer_.perspective() == Perspective::IS_SERVER) {
+ header.source_connection_id = connection_id_;
+ header.source_connection_id_included = connection_id_included_;
+ header.destination_connection_id_included = CONNECTION_ID_ABSENT;
+ } else {
+ header.destination_connection_id = connection_id_;
+ header.destination_connection_id_included = connection_id_included_;
+ }
if (peer_framer_.transport_version() > QUIC_VERSION_43 &&
peer_framer_.perspective() == Perspective::IS_SERVER) {
header.destination_connection_id_included = CONNECTION_ID_ABSENT;
@@ -1331,6 +1342,7 @@
}
}
}
+ header.packet_number_length = packet_number_length_;
header.packet_number = QuicPacketNumber(number);
QuicFrames frames;
@@ -1357,13 +1369,22 @@
QuicPacketHeader header;
// Set connection_id to peer's in memory representation as this connection
// close packet is created by peer_framer.
- header.destination_connection_id = connection_id_;
- header.packet_number = QuicPacketNumber(number);
- if (peer_framer_.transport_version() > QUIC_VERSION_43 &&
+ if (GetQuicRestartFlag(quic_do_not_override_connection_id) &&
peer_framer_.perspective() == Perspective::IS_SERVER) {
+ header.source_connection_id = connection_id_;
header.destination_connection_id_included = CONNECTION_ID_ABSENT;
+ if (peer_framer_.transport_version() <= QUIC_VERSION_43) {
+ header.source_connection_id_included = CONNECTION_ID_PRESENT;
+ }
+ } else {
+ header.destination_connection_id = connection_id_;
+ if (peer_framer_.transport_version() > QUIC_VERSION_43) {
+ header.destination_connection_id_included = CONNECTION_ID_ABSENT;
+ }
}
+ header.packet_number = QuicPacketNumber(number);
+
QuicConnectionCloseFrame qccf(QUIC_PEER_GOING_AWAY);
if (peer_framer_.transport_version() == QUIC_VERSION_99) {
// Default close-type is Google QUIC. If doing IETF/V99 then
@@ -6764,8 +6785,12 @@
// Now force another packet. The connection should transition into
// NEGOTIATED_VERSION state and tell the packet creator to StopSendingVersion.
QuicPacketHeader header;
- header.destination_connection_id = connection_id_;
header.destination_connection_id_included = CONNECTION_ID_ABSENT;
+ if (!GetQuicRestartFlag(quic_do_not_override_connection_id)) {
+ header.destination_connection_id = connection_id_;
+ } else {
+ header.source_connection_id = connection_id_;
+ }
header.packet_number = QuicPacketNumber(12);
header.version_flag = false;
QuicFrames frames;
@@ -6865,9 +6890,18 @@
TEST_P(QuicConnectionTest, ProcessFramesIfPacketClosedConnection) {
// Construct a packet with stream frame and connection close frame.
QuicPacketHeader header;
- header.destination_connection_id = connection_id_;
- if (peer_framer_.transport_version() > QUIC_VERSION_43) {
+ if (GetQuicRestartFlag(quic_do_not_override_connection_id) &&
+ peer_framer_.perspective() == Perspective::IS_SERVER) {
+ header.source_connection_id = connection_id_;
header.destination_connection_id_included = CONNECTION_ID_ABSENT;
+ if (peer_framer_.transport_version() <= QUIC_VERSION_43) {
+ header.source_connection_id_included = CONNECTION_ID_PRESENT;
+ }
+ } else {
+ header.destination_connection_id = connection_id_;
+ if (peer_framer_.transport_version() > QUIC_VERSION_43) {
+ header.destination_connection_id_included = CONNECTION_ID_ABSENT;
+ }
}
header.packet_number = QuicPacketNumber(1);
header.version_flag = false;