From 118d01ac35adcf4d1efb5d225f9d85d857115c0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Spr=C3=A5ng?= Date: Thu, 25 Jun 2020 09:58:41 +0000 Subject: [PATCH] Revert "Reland "Removes lock release in PacedSender callback."" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit b46df3da44c42f6e5055c69a8247a344887108ea. Reason for revert: May cause deadlock. Original change's description: > Reland "Removes lock release in PacedSender callback." > > This is a reland of 6b9c60b06d04bc519195fca1f621b10accfeb46b > > Original change's description: > > Removes lock release in PacedSender callback. > > > > The PacedSender currently has logic to temporarily release its internal > > lock while sending or asking for padding. > > This creates some tricky situations in the pacing controller where we > > need to consider if some thread can enter while we the process thread is > > actually processing, just temporarily busy sending. > > > > Since the pacing call stack is no longer cyclic, we can actually remove > > this lock-release now. > > > > Bug: webrtc:10809 > > Change-Id: Ic59c605252bed1f96a03406c908a30cd1012f995 > > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/173592 > > Reviewed-by: Sebastian Jansson > > Commit-Queue: Erik Språng > > Cr-Commit-Position: refs/heads/master@{#31206} > > Bug: webrtc:10809 > Change-Id: Id39fc49b0a038e7ae3a0d9818fb0806c33ae0ae0 > Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/175656 > Reviewed-by: Sebastian Jansson > Commit-Queue: Erik Språng > Cr-Commit-Position: refs/heads/master@{#31332} TBR=sprang@webrtc.org,srte@webrtc.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: webrtc:10809 Change-Id: I6b06bafad8cd9eeb22107d04b953fd14b8131afa Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/178100 Reviewed-by: Erik Språng Commit-Queue: Erik Språng Cr-Commit-Position: refs/heads/master@{#31564} --- modules/pacing/paced_sender.cc | 8 +++++++- test/direct_transport.cc | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/pacing/paced_sender.cc b/modules/pacing/paced_sender.cc index 8d9c0b39fe..e38863031b 100644 --- a/modules/pacing/paced_sender.cc +++ b/modules/pacing/paced_sender.cc @@ -207,11 +207,17 @@ void PacedSender::SetQueueTimeLimit(TimeDelta limit) { void PacedSender::SendRtpPacket(std::unique_ptr packet, const PacedPacketInfo& cluster_info) { + critsect_.Leave(); packet_router_->SendPacket(std::move(packet), cluster_info); + critsect_.Enter(); } std::vector> PacedSender::GeneratePadding( DataSize size) { - return packet_router_->GeneratePadding(size.bytes()); + std::vector> padding_packets; + critsect_.Leave(); + padding_packets = packet_router_->GeneratePadding(size.bytes()); + critsect_.Enter(); + return padding_packets; } } // namespace webrtc diff --git a/test/direct_transport.cc b/test/direct_transport.cc index f4ae047870..818480b18b 100644 --- a/test/direct_transport.cc +++ b/test/direct_transport.cc @@ -55,6 +55,7 @@ DirectTransport::~DirectTransport() { } void DirectTransport::SetReceiver(PacketReceiver* receiver) { + rtc::CritScope cs(&process_lock_); fake_network_->SetReceiver(receiver); }