In RtcpTransceiver avoid extra PostTask during construction

it is not required because during construction members can be set on
wrong thread, and in some corner cases it may even cause a crash.

Bug: none
Change-Id: I37d7f2a7772b6ab5e574077d3f53bca2529f9ae1
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/222651
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#34315}
diff --git a/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc b/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc
index db065e2..5753ffd 100644
--- a/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc
+++ b/modules/rtp_rtcp/source/rtcp_transceiver_impl.cc
@@ -92,9 +92,7 @@
     : 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 71b457b..06e1083 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 @@
   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;