Revert "Removes lock release in PacedSender callback."
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 <srte@webrtc.org>
> Commit-Queue: Erik Språng <sprang@webrtc.org>
> 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 <sprang@webrtc.org>
Commit-Queue: Erik Språng <sprang@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#31209}
diff --git a/modules/pacing/paced_sender.cc b/modules/pacing/paced_sender.cc
index 1d02fe9..cd298f9 100644
--- a/modules/pacing/paced_sender.cc
+++ b/modules/pacing/paced_sender.cc
@@ -196,11 +196,17 @@
void PacedSender::SendRtpPacket(std::unique_ptr<RtpPacketToSend> packet,
const PacedPacketInfo& cluster_info) {
+ critsect_.Leave();
packet_router_->SendPacket(std::move(packet), cluster_info);
+ critsect_.Enter();
}
std::vector<std::unique_ptr<RtpPacketToSend>> PacedSender::GeneratePadding(
DataSize size) {
- return packet_router_->GeneratePadding(size.bytes());
+ std::vector<std::unique_ptr<RtpPacketToSend>> 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 f4ae047..818480b 100644
--- a/test/direct_transport.cc
+++ b/test/direct_transport.cc
@@ -55,6 +55,7 @@
}
void DirectTransport::SetReceiver(PacketReceiver* receiver) {
+ rtc::CritScope cs(&process_lock_);
fake_network_->SetReceiver(receiver);
}