From 354c2862e052707448d058994f7c183d2ee8ab35 Mon Sep 17 00:00:00 2001 From: Guillaume Desmottes Date: Mon, 28 Mar 2022 12:47:53 +0200 Subject: [PATCH] uriplaylistbin: handle waiting items no longer being set ab96219c19f9009de1d942c41adebd0dd1645750 broke some assertions as waiting items are now unset when shutting down the element. --- utils/uriplaylistbin/src/uriplaylistbin/imp.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/utils/uriplaylistbin/src/uriplaylistbin/imp.rs b/utils/uriplaylistbin/src/uriplaylistbin/imp.rs index 1124f3b4..a41d768a 100644 --- a/utils/uriplaylistbin/src/uriplaylistbin/imp.rs +++ b/utils/uriplaylistbin/src/uriplaylistbin/imp.rs @@ -1233,7 +1233,10 @@ impl UriPlaylistBin { return; } - let item = state.waiting_for_pads.clone().unwrap(); + let item = match state.waiting_for_pads.as_ref() { + Some(item) => item.clone(), + None => return, // element is being shutdown + }; // Parse the pad name to extract the stream type and its index. // We could get the type from the Stream object from the StreamStart sticky event but we'd still have @@ -1530,7 +1533,11 @@ impl UriPlaylistBin { let mut state_guard = self.state.lock().unwrap(); let state = state_guard.as_mut().unwrap(); - let item = state.waiting_for_ss_eos.take().unwrap(); + let item = match state.waiting_for_ss_eos.take() { + Some(item) => item, + None => return, // element is being shutdown + }; + let (topology, pending_pads, sender) = item.done_waiting_for_ss_eos(); state.waiting_for_pads = Some(item);