From 44bc8e96ed88005fec89a1cc479e291fea30d1b3 Mon Sep 17 00:00:00 2001 From: Philipp Hancke Date: Fri, 14 Jul 2023 10:47:11 +0200 Subject: [PATCH] [M116] Bail out early if the RTP send module for a SSRC was not found since it might have been deregistered previously. BUG=chromium:1454860,chromium:1459124 (cherry picked from commit c0ed83eac258032a2416b7e4200bd074a6455f4b) Change-Id: I70ba43265361d040e568f83b6400ff8f3c2a8e98 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/311800 Reviewed-by: Harald Alvestrand Commit-Queue: Philipp Hancke Cr-Original-Commit-Position: refs/heads/main@{#40431} Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/312120 Cr-Commit-Position: refs/branch-heads/5845@{#6} Cr-Branched-From: f80cf814353d11a9f22bef5ce5e8868f2c72f0d0-refs/heads/main@{#40319} --- modules/pacing/packet_router.cc | 5 ++++- modules/pacing/packet_router_unittest.cc | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/modules/pacing/packet_router.cc b/modules/pacing/packet_router.cc index 135b618bfa..ba133f3d1f 100644 --- a/modules/pacing/packet_router.cc +++ b/modules/pacing/packet_router.cc @@ -88,7 +88,10 @@ void PacketRouter::AddSendRtpModuleToMap(RtpRtcpInterface* rtp_module, void PacketRouter::RemoveSendRtpModuleFromMap(uint32_t ssrc) { RTC_DCHECK_RUN_ON(&thread_checker_); auto it = send_modules_map_.find(ssrc); - RTC_DCHECK(it != send_modules_map_.end()); + if (it == send_modules_map_.end()) { + RTC_LOG(LS_ERROR) << "No send module found for ssrc " << ssrc; + return; + } send_modules_list_.remove(it->second); RTC_CHECK(modules_used_in_current_batch_.empty()); send_modules_map_.erase(it); diff --git a/modules/pacing/packet_router_unittest.cc b/modules/pacing/packet_router_unittest.cc index 7604de6fba..af8534316c 100644 --- a/modules/pacing/packet_router_unittest.cc +++ b/modules/pacing/packet_router_unittest.cc @@ -541,12 +541,6 @@ TEST_F(PacketRouterDeathTest, DoubleRegistrationOfReceiveModuleDisallowed) { packet_router_.RemoveReceiveRtpModule(&module); } -TEST_F(PacketRouterDeathTest, RemovalOfNeverAddedSendModuleDisallowed) { - NiceMock module; - - EXPECT_DEATH(packet_router_.RemoveSendRtpModule(&module), ""); -} - TEST_F(PacketRouterDeathTest, RemovalOfNeverAddedReceiveModuleDisallowed) { NiceMock module; @@ -554,6 +548,18 @@ TEST_F(PacketRouterDeathTest, RemovalOfNeverAddedReceiveModuleDisallowed) { } #endif // RTC_DCHECK_IS_ON && GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID) +TEST_F(PacketRouterTest, RemovalOfNeverAddedSendModuleIgnored) { + NiceMock module; + packet_router_.RemoveSendRtpModule(&module); +} + +TEST_F(PacketRouterTest, DuplicateRemovalOfSendModuleIgnored) { + NiceMock module; + packet_router_.AddSendRtpModule(&module, false); + packet_router_.RemoveSendRtpModule(&module); + packet_router_.RemoveSendRtpModule(&module); +} + TEST(PacketRouterRembTest, ChangeSendRtpModuleChangeRembSender) { rtc::ScopedFakeClock clock; NiceMock rtp_send;