webrtcbin: disconnect signal ICE handlers on dispose

It is entirely possible that the in progress may still provide some state
updates until the ICE object is destroyed, these state updates should
not really be done when webrtcbin is in the process of destroying itself
and access freed data.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9216>
This commit is contained in:
Matthew Waters 2024-07-26 14:23:10 +10:00 committed by GStreamer Marge Bot
parent e82b80a74a
commit d59cc622f2

View File

@ -8800,8 +8800,11 @@ gst_webrtc_bin_dispose (GObject * object)
{
GstWebRTCBin *webrtc = GST_WEBRTC_BIN (object);
if (webrtc->priv->ice)
if (webrtc->priv->ice) {
gst_webrtc_ice_set_on_ice_candidate (webrtc->priv->ice, NULL, NULL, NULL);
g_signal_handlers_disconnect_by_data (webrtc->priv->ice, webrtc);
gst_object_unref (webrtc->priv->ice);
}
webrtc->priv->ice = NULL;
if (webrtc->priv->ice_stream_map)