From 41476e014c8364adc15b90238d54a8aef91d7f56 Mon Sep 17 00:00:00 2001 From: nisse Date: Fri, 25 Aug 2017 09:08:44 -0700 Subject: [PATCH] When Ulpfec recovers a packet, set |returned| flag earlier. This avoids infinite recursion in case the recovered packet carries a RED header. BUG=chromium:754748 Review-Url: https://codereview.webrtc.org/3004553002 Cr-Commit-Position: refs/heads/master@{#19525} --- webrtc/modules/rtp_rtcp/source/ulpfec_receiver_impl.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/webrtc/modules/rtp_rtcp/source/ulpfec_receiver_impl.cc b/webrtc/modules/rtp_rtcp/source/ulpfec_receiver_impl.cc index b4ac30e040..f3b08310c6 100644 --- a/webrtc/modules/rtp_rtcp/source/ulpfec_receiver_impl.cc +++ b/webrtc/modules/rtp_rtcp/source/ulpfec_receiver_impl.cc @@ -241,11 +241,13 @@ int32_t UlpfecReceiverImpl::ProcessReceivedFec() { } ForwardErrorCorrection::Packet* packet = recovered_packet->pkt; ++packet_counter_.num_recovered_packets; + // Set this flag first; in case the recovered packet carries a RED + // header, OnRecoveredPacket will recurse back here. + recovered_packet->returned = true; crit_sect_.Leave(); recovered_packet_callback_->OnRecoveredPacket(packet->data, packet->length); crit_sect_.Enter(); - recovered_packet->returned = true; } crit_sect_.Leave(); return 0;