Fix crash in PacketArrivalMap::EraseTo() when using missing seq number
There was a DCHECK in PacketArrivalMap::EraseTo() that the seqeuence number that is used as argument has been received. However, this is not necessarily the case since it's cleared upon a request of a feedback report from the sender. Bug: webrtc:14679 Change-Id: I908b4bf1f2a4355593f0a361e1733fc91527366d Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/283741 Commit-Queue: Johannes Kron <kron@webrtc.org> Reviewed-by: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#38755}
This commit is contained in:
committed by
WebRTC LUCI CQ
parent
ef7618a8f9
commit
c5aac4ec1f
@ -151,7 +151,6 @@ void PacketArrivalTimeMap::EraseTo(int64_t sequence_number) {
|
||||
}
|
||||
// Remove some.
|
||||
begin_sequence_number_ = sequence_number;
|
||||
RTC_DCHECK(has_received(begin_sequence_number_));
|
||||
AdjustToSize(end_sequence_number_ - begin_sequence_number_);
|
||||
}
|
||||
|
||||
|
||||
@ -264,5 +264,28 @@ TEST(PacketArrivalMapTest, EraseAllRemembersBeginningSeqNbr) {
|
||||
EXPECT_FALSE(map.has_received(51));
|
||||
}
|
||||
|
||||
TEST(PacketArrivalMapTest, EraseToMissingSequenceNumber) {
|
||||
PacketArrivalTimeMap map;
|
||||
|
||||
map.AddPacket(37, Timestamp::Millis(10));
|
||||
map.AddPacket(39, Timestamp::Millis(11));
|
||||
map.AddPacket(40, Timestamp::Millis(12));
|
||||
map.AddPacket(41, Timestamp::Millis(13));
|
||||
|
||||
map.EraseTo(38);
|
||||
|
||||
map.AddPacket(42, Timestamp::Millis(40));
|
||||
|
||||
EXPECT_EQ(map.begin_sequence_number(), 38);
|
||||
EXPECT_EQ(map.end_sequence_number(), 43);
|
||||
|
||||
EXPECT_FALSE(map.has_received(37));
|
||||
EXPECT_FALSE(map.has_received(38));
|
||||
EXPECT_TRUE(map.has_received(39));
|
||||
EXPECT_TRUE(map.has_received(40));
|
||||
EXPECT_TRUE(map.has_received(41));
|
||||
EXPECT_TRUE(map.has_received(42));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace webrtc
|
||||
|
||||
Reference in New Issue
Block a user