diff options
author | Philippe Normand <philn@igalia.com> | 2023-05-02 18:14:20 +0100 |
---|---|---|
committer | GStreamer Marge Bot <gitlab-merge-bot@gstreamer-foundation.org> | 2023-05-03 02:29:31 +0000 |
commit | 4db12345d1c94f08df07498cc3c3dba25eacb3db (patch) | |
tree | 54fd235881d24870ef9cd73998acfe31f716a0b7 /subprojects | |
parent | 83026f62890b97904f3da0138456680eac3e0cef (diff) | |
download | gstreamer-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.c | 5 |
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); |