1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-08-08 09:42:06 +03:00

Do not retransmit PATH_RESPONSE

Summary: https://github.com/quicwg/base-drafts/issues/2724

Reviewed By: mjoras

Differential Revision: D15719978

fbshipit-source-id: 1c57f3e2b497f1abfcd5fa3b5643d76aa51d11d9
This commit is contained in:
Junqi Wang
2019-06-26 22:25:31 -07:00
committed by Facebook Github Bot
parent 3507e89c07
commit 0cc3eabc56
2 changed files with 8 additions and 11 deletions

View File

@@ -1283,10 +1283,10 @@ TEST_F(QuicTransportTest, ClonePathResponse) {
[&](auto&) { return false; }); [&](auto&) { return false; });
}) != p.packet.frames.end(); }) != p.packet.frames.end();
}); });
EXPECT_EQ(numPathResponsePackets, 3); EXPECT_EQ(numPathResponsePackets, 1);
} }
TEST_F(QuicTransportTest, ResendPathResponseOnLoss) { TEST_F(QuicTransportTest, DoNotResendPathResponseOnLoss) {
auto& conn = transport_->getConnectionState(); auto& conn = transport_->getConnectionState();
EXPECT_EQ(conn.pendingEvents.frames.size(), 0); EXPECT_EQ(conn.pendingEvents.frames.size(), 0);
@@ -1302,11 +1302,7 @@ TEST_F(QuicTransportTest, ResendPathResponseOnLoss) {
getLastOutstandingPacket(conn, PacketNumberSpace::AppData)->packet; getLastOutstandingPacket(conn, PacketNumberSpace::AppData)->packet;
markPacketLoss(conn, packet, false, 2); markPacketLoss(conn, packet, false, 2);
EXPECT_EQ(conn.pendingEvents.frames.size(), 1); EXPECT_EQ(conn.pendingEvents.frames.size(), 0);
EXPECT_TRUE(folly::variant_match(
conn.pendingEvents.frames.front(),
[&](PathResponseFrame& f) { return f == pathResponse; },
[&](auto&) { return false; }));
} }
TEST_F(QuicTransportTest, SendNewConnectionIdFrame) { TEST_F(QuicTransportTest, SendNewConnectionIdFrame) {

View File

@@ -56,8 +56,9 @@ folly::Optional<QuicSimpleFrame> updateSimpleFrameOnPacketClone(
} }
return QuicSimpleFrame(frame); return QuicSimpleFrame(frame);
}, },
[&](const PathResponseFrame& frame) -> folly::Optional<QuicSimpleFrame> { [&](const PathResponseFrame&) -> folly::Optional<QuicSimpleFrame> {
return QuicSimpleFrame(frame); // Do not clone PATH_RESPONSE to avoid buffering
return folly::none;
}, },
[&](const NewConnectionIdFrame& frame) [&](const NewConnectionIdFrame& frame)
-> folly::Optional<QuicSimpleFrame> { -> folly::Optional<QuicSimpleFrame> {
@@ -118,8 +119,8 @@ void updateSimpleFrameOnPacketLoss(
conn.pendingEvents.pathChallenge = frame; conn.pendingEvents.pathChallenge = frame;
} }
}, },
[&](const PathResponseFrame& frame) { [&](const PathResponseFrame&) {
conn.pendingEvents.frames.push_back(frame); // Do not retransmit PATH_RESPONSE to avoid buffering
}, },
[&](const NewConnectionIdFrame& frame) { [&](const NewConnectionIdFrame& frame) {
conn.pendingEvents.frames.push_back(frame); conn.pendingEvents.frames.push_back(frame);