From 3a65dba926f59102658e9de4c249457c753acad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erik=20Spr=C3=A5ng?= Date: Mon, 11 May 2020 11:37:36 +0000 Subject: [PATCH] Revert "Removes lock release in PacedSender callback." MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 6b9c60b06d04bc519195fca1f621b10accfeb46b. Reason for revert: Breaks downstream test 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} TBR=sprang@webrtc.org,srte@webrtc.org Change-Id: Ic84eee6097528d0792e3b1f90f36bc78447a0d81 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:10809 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/174820 Reviewed-by: Erik Språng Commit-Queue: Erik Språng Cr-Commit-Position: refs/heads/master@{#31209} --- 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 1d02fe95e4..cd298f9b0b 100644 --- a/modules/pacing/paced_sender.cc +++ b/modules/pacing/paced_sender.cc @@ -196,11 +196,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); }