1
0
mirror of https://github.com/facebookincubator/mvfst.git synced 2025-11-09 10:00:57 +03:00

Add received packets timestamps to AckState

Summary:
Store timestamps/packet numbers of recently received packets in AckState.

 - The maximum number of packets stored is controlled by kMaxReceivedPktsTimestampsStored.
- The packet number of entries in the deque is guarenteed to increase
   monotonically because an entry is only added for a received packet
  if the packet number is greater than the packet number of the last
  element in the deque (e.g., entries are not added for packets that
  arrive out of order relative to previously received packets).

Reviewed By: bschlinker

Differential Revision: D37799023

fbshipit-source-id: 3b6bf2ba8ea15219a87bbdc2724fe23eebe66b70
This commit is contained in:
Sharad Jaiswal (Eng)
2022-11-15 20:14:57 -08:00
committed by Facebook GitHub Bot
parent 650773ed59
commit 328c78d0e2
12 changed files with 193 additions and 66 deletions

View File

@@ -493,7 +493,7 @@ TEST_F(QuicServerTransportTest, ReceiveCloseAfterLocalError) {
serverWrites.clear();
auto currLargestReceivedPacketNum =
server->getConn().ackStates.appDataAckState.largestReceivedPacketNum;
server->getConn().ackStates.appDataAckState.largestRecvdPacketNum;
EXPECT_TRUE(hasNotReceivedNewPacketsSinceLastCloseSent(server->getConn()));
ShortHeader header2(
@@ -517,7 +517,7 @@ TEST_F(QuicServerTransportTest, ReceiveCloseAfterLocalError) {
*makeClientEncryptedCodec(),
QuicFrame::Type::ConnectionCloseFrame));
EXPECT_GT(
server->getConn().ackStates.appDataAckState.largestReceivedPacketNum,
server->getConn().ackStates.appDataAckState.largestRecvdPacketNum,
currLargestReceivedPacketNum);
// Deliver the same bad data again
@@ -526,7 +526,7 @@ TEST_F(QuicServerTransportTest, ReceiveCloseAfterLocalError) {
EXPECT_LT(
server->getConn()
.ackStates.appDataAckState.largestReceivedAtLastCloseSent,
server->getConn().ackStates.appDataAckState.largestReceivedPacketNum);
server->getConn().ackStates.appDataAckState.largestRecvdPacketNum);
EXPECT_FALSE(verifyFramePresent(
serverWrites,
*makeClientEncryptedCodec(),
@@ -575,11 +575,11 @@ TEST_F(QuicServerTransportTest, NoDataExceptCloseProcessedAfterClosing) {
EXPECT_TRUE(hasNotReceivedNewPacketsSinceLastCloseSent(server->getConn()));
serverWrites.clear();
// largestReceivedPacketNum won't be accurate because we will throw
// largestRecvdPacketNum won't be accurate because we will throw
// before updating the ack state.
deliverDataWithoutErrorCheck(packetToBuf(packet));
EXPECT_EQ(
server->getConn().ackStates.appDataAckState.largestReceivedPacketNum,
server->getConn().ackStates.appDataAckState.largestRecvdPacketNum,
packetNum);
EXPECT_FALSE(verifyFramePresent(
serverWrites,