From 46b9fb69f49898acf690cec6ced7325709b1e045 Mon Sep 17 00:00:00 2001 From: Yang Chi Date: Fri, 8 May 2020 11:38:17 -0700 Subject: [PATCH] Skip a packet number for Quic probe packets Summary: to elicit acks Reviewed By: mjoras Differential Revision: D21309835 fbshipit-source-id: fd56de66c806d5e03292298c79eab49014291b75 --- quic/api/QuicTransportFunctions.cpp | 2 ++ quic/api/test/QuicTransportFunctionsTest.cpp | 9 +++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/quic/api/QuicTransportFunctions.cpp b/quic/api/QuicTransportFunctions.cpp index 1efc2dc1a..a78cf2a70 100644 --- a/quic/api/QuicTransportFunctions.cpp +++ b/quic/api/QuicTransportFunctions.cpp @@ -1084,6 +1084,8 @@ uint64_t writeProbingDataToSocket( const Aead& aead, const PacketNumberCipher& headerCipher, QuicVersion version) { + // Skip a packet number for probing packets to elicit acks + increaseNextPacketNum(connection, pnSpace); CloningScheduler cloningScheduler( scheduler, connection, "CloningScheduler", aead.getCipherOverhead()); auto written = writeConnectionDataToSocket( diff --git a/quic/api/test/QuicTransportFunctionsTest.cpp b/quic/api/test/QuicTransportFunctionsTest.cpp index f616528bc..429ec38a3 100644 --- a/quic/api/test/QuicTransportFunctionsTest.cpp +++ b/quic/api/test/QuicTransportFunctionsTest.cpp @@ -1384,6 +1384,9 @@ TEST_F(QuicTransportFunctionsTest, WriteProbingNewData) { *rawSocket, *conn, 1, *aead, *headerCipher, getVersion(*conn)); EXPECT_LT(currentPacketSeqNum, conn->ackStates.appDataAckState.nextPacketNum); EXPECT_FALSE(conn->outstandingPackets.empty()); + EXPECT_EQ( + conn->outstandingPackets.back().packet.header.getPacketSequenceNum(), + currentPacketSeqNum + 1); EXPECT_TRUE(conn->pendingEvents.setLossDetectionAlarm); EXPECT_GT(stream1->currentWriteOffset, currentStreamWriteOffset); EXPECT_FALSE(stream1->retransmissionBuffer.empty()); @@ -1505,7 +1508,8 @@ TEST_F(QuicTransportFunctionsTest, WriteProbesNoNewDataNoCryptoDataNoOldData) { *headerCipher, getVersion(*conn))); EXPECT_EQ(1, probesToSend); - EXPECT_EQ(currentPacketSeqNum, conn->ackStates.appDataAckState.nextPacketNum); + EXPECT_EQ( + currentPacketSeqNum + 1, conn->ackStates.appDataAckState.nextPacketNum); EXPECT_TRUE(conn->outstandingPackets.empty()); EXPECT_FALSE(conn->pendingEvents.setLossDetectionAlarm); EXPECT_EQ(stream1->currentWriteOffset, currentStreamWriteOffset); @@ -1546,7 +1550,8 @@ TEST_F(QuicTransportFunctionsTest, ProbingNotWriteOtherFrames) { *headerCipher, getVersion(*conn))); EXPECT_EQ(1, probesToSend); - EXPECT_EQ(currentPacketSeqNum, conn->ackStates.appDataAckState.nextPacketNum); + EXPECT_EQ( + currentPacketSeqNum + 1, conn->ackStates.appDataAckState.nextPacketNum); EXPECT_TRUE(conn->outstandingPackets.empty()); EXPECT_FALSE(conn->pendingEvents.setLossDetectionAlarm); EXPECT_EQ(stream1->currentWriteOffset, currentStreamWriteOffset);