diff --git a/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc b/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc index db065e2cd0..5753ffd692 100644 --- a/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc +++ b/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc @@ -92,9 +92,7 @@ RtcpTransceiverImpl::RtcpTransceiverImpl(const RtcpTransceiverConfig& config) : config_(config), ready_to_send_(config.initial_ready_to_send) { RTC_CHECK(config_.Validate()); if (ready_to_send_ && config_.schedule_periodic_compound_packets) { - config_.task_queue->PostTask(ToQueuedTask([this] { - SchedulePeriodicCompoundPackets(config_.initial_report_delay_ms); - })); + SchedulePeriodicCompoundPackets(config_.initial_report_delay_ms); } } diff --git a/modules/rtp_rtcp/source/rtcp_transceiver_impl_unittest.cc b/modules/rtp_rtcp/source/rtcp_transceiver_impl_unittest.cc index 71b457b122..06e1083aa8 100644 --- a/modules/rtp_rtcp/source/rtcp_transceiver_impl_unittest.cc +++ b/modules/rtp_rtcp/source/rtcp_transceiver_impl_unittest.cc @@ -169,6 +169,25 @@ TEST(RtcpTransceiverImplTest, NeedToStopPeriodicTaskToDestroyOnTaskQueue) { ASSERT_TRUE(done.Wait(/*milliseconds=*/1000)); } +TEST(RtcpTransceiverImplTest, CanBeDestroyedRightAfterCreation) { + SimulatedClock clock(0); + FakeRtcpTransport transport; + TaskQueueForTest queue("rtcp"); + RtcpTransceiverConfig config = DefaultTestConfig(); + config.clock = &clock; + config.task_queue = queue.Get(); + config.schedule_periodic_compound_packets = true; + config.outgoing_transport = &transport; + + rtc::Event done; + queue.PostTask([&] { + RtcpTransceiverImpl rtcp_transceiver(config); + rtcp_transceiver.StopPeriodicTask(); + done.Set(); + }); + ASSERT_TRUE(done.Wait(/*milliseconds=*/1000)); +} + TEST(RtcpTransceiverImplTest, CanDestroyAfterTaskQueue) { SimulatedClock clock(0); FakeRtcpTransport transport;