From 721d17e1818a82c6b3fdf9468ec82938e91969a8 Mon Sep 17 00:00:00 2001 From: Edward Hervey Date: Sat, 15 Apr 2023 08:17:09 +0200 Subject: [PATCH] rtpgccbwe: Don't process empty lists The structure parsing could result in an empty vector. Don't do any processing since the loss code assumes it's non-empty for average estimates which would result in weird/invalid results. Part-of: --- net/rtp/src/gcc/imp.rs | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/net/rtp/src/gcc/imp.rs b/net/rtp/src/gcc/imp.rs index 479198ac..f56d0a78 100644 --- a/net/rtp/src/gcc/imp.rs +++ b/net/rtp/src/gcc/imp.rs @@ -1184,19 +1184,22 @@ impl ObjectSubclass for BandwidthEstimator { }) .collect::>(); - let bitrate_changed = { - let mut state = this.state.lock().unwrap(); + // The list of packets could be empty once parsed + if !packets.is_empty() { + let bitrate_changed = { + let mut state = this.state.lock().unwrap(); - state.detector.update(&mut packets); - if !state.delay_control(&bwe) { - state.loss_control(&bwe) - } else { - true + state.detector.update(&mut packets); + if !state.delay_control(&bwe) { + state.loss_control(&bwe) + } else { + true + } + }; + + if bitrate_changed { + bwe.notify("estimated-bitrate") } - }; - - if bitrate_changed { - bwe.notify("estimated-bitrate") } } }