diff --git a/src/core/ack_tracker.c b/src/core/ack_tracker.c index 72b9dbe5c7..6699767237 100644 --- a/src/core/ack_tracker.c +++ b/src/core/ack_tracker.c @@ -101,6 +101,7 @@ void QuicAckTrackerAckPacket( _Inout_ QUIC_ACK_TRACKER* Tracker, _In_ uint64_t PacketNumber, + _In_ uint64_t RecvTimeUs, _In_ QUIC_ECN_TYPE ECN, _In_ BOOLEAN AckElicitingPayload ) @@ -143,7 +144,7 @@ QuicAckTrackerAckPacket( BOOLEAN NewLargestPacketNumber = PacketNumber == QuicRangeGetMax(&Tracker->PacketNumbersToAck); if (NewLargestPacketNumber) { - Tracker->LargestPacketNumberRecvTime = QuicTimeUs64(); + Tracker->LargestPacketNumberRecvTime = RecvTimeUs; } switch (ECN) { diff --git a/src/core/ack_tracker.h b/src/core/ack_tracker.h index 2545d3bb02..b281f7eb07 100644 --- a/src/core/ack_tracker.h +++ b/src/core/ack_tracker.h @@ -99,6 +99,7 @@ void QuicAckTrackerAckPacket( _Inout_ QUIC_ACK_TRACKER* Tracker, _In_ uint64_t PacketNumber, + _In_ uint64_t RecvTimeUs, _In_ QUIC_ECN_TYPE ECN, _In_ BOOLEAN AckElicitingPayload ); diff --git a/src/core/connection.c b/src/core/connection.c index f6f402b280..b96db8cc75 100644 --- a/src/core/connection.c +++ b/src/core/connection.c @@ -3699,6 +3699,7 @@ QuicConnRecvFrames( BOOLEAN Closed = Connection->State.ClosedLocally || Connection->State.ClosedRemotely; const uint8_t* Payload = Packet->Buffer + Packet->HeaderLength; uint16_t PayloadLength = Packet->PayloadLength; + uint64_t RecvTime = QuicTimeUs64(); uint16_t Offset = 0; while (Offset < PayloadLength) { @@ -4464,6 +4465,7 @@ QuicConnRecvFrames( QuicAckTrackerAckPacket( &Connection->Packets[EncryptLevel]->AckTracker, Packet->PacketNumber, + RecvTime, ECN, AckPacketImmediately); }