From 0a23782aeaeed41c4605783f922c0bcc4fe0208d Mon Sep 17 00:00:00 2001 From: Philippe Normand Date: Tue, 2 May 2023 18:14:20 +0100 Subject: webrtcbin: Fix potential deadlock when closing before any data was sent A blocking pad probe is added on new sink pads, it's usually removed after the caps have been negotiated or the signaling state switched to stable, but if that never happens and the pad is released we kept the pad probe active, leaving the pad blocked, preventing clean disposal. Part-of: --- subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c b/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c index 6a8f722364..8929fef3d0 100644 --- a/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c +++ b/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c @@ -8184,6 +8184,11 @@ gst_webrtc_bin_release_pad (GstElement * element, GstPad * pad) gst_caps_replace (&webrtc_pad->received_caps, NULL); PC_UNLOCK (webrtc); + if (webrtc_pad->block_id) { + gst_pad_remove_probe (GST_PAD (pad), webrtc_pad->block_id); + webrtc_pad->block_id = 0; + } + _remove_pad (webrtc, webrtc_pad); PC_LOCK (webrtc); -- cgit v1.2.1