summaryrefslogtreecommitdiff
path: root/subprojects
diff options
context:
space:
mode:
authorPhilippe Normand <philn@igalia.com>2023-05-02 18:14:20 +0100
committerGStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org>2023-05-03 02:29:31 +0000
commit4db12345d1c94f08df07498cc3c3dba25eacb3db (patch)
tree54fd235881d24870ef9cd73998acfe31f716a0b7 /subprojects
parent83026f62890b97904f3da0138456680eac3e0cef (diff)
downloadgstreamer-4db12345d1c94f08df07498cc3c3dba25eacb3db.tar.gz
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: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4529>
Diffstat (limited to 'subprojects')
-rw-r--r--subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c b/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c
index 2cd502c503..4f327c5858 100644
--- a/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c
+++ b/subprojects/gst-plugins-bad/ext/webrtc/gstwebrtcbin.c
@@ -8214,6 +8214,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);