From 4837ba8d08e1773f9ff3e386d83615c5de1de0d7 Mon Sep 17 00:00:00 2001 From: Fabrice Bellet Date: Mon, 3 Apr 2017 14:16:38 +0200 Subject: [PATCH] rtp: stop the transmitter before unlinking its source This patch prevents the transmitter source to fail, when receiving data after the source pad of its parent bin has been unlinked, which occurs when the downstream recv_rtp_funnel and recv_rtcp_funnel are removed, when destroying a session. https://bugs.freedesktop.org/show_bug.cgi?id=100586 --- gst/fsrtpconference/fs-rtp-session.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/gst/fsrtpconference/fs-rtp-session.c b/gst/fsrtpconference/fs-rtp-session.c index ee0225f..a90dcfc 100644 --- a/gst/fsrtpconference/fs-rtp-session.c +++ b/gst/fsrtpconference/fs-rtp-session.c @@ -747,14 +747,13 @@ fs_rtp_session_dispose (GObject *obj) gst_pad_set_active (self->priv->rtpbin_recv_rtp_sink, FALSE); if (self->priv->rtpbin_recv_rtcp_sink) gst_pad_set_active (self->priv->rtpbin_recv_rtcp_sink, FALSE); - - stop_and_remove (conferencebin, &self->priv->transmitter_rtp_funnel, TRUE); - stop_and_remove (conferencebin, &self->priv->transmitter_rtcp_funnel, TRUE); - if (self->priv->transmitters) g_hash_table_foreach (self->priv->transmitters, _stop_transmitter_elem, "gst-src"); + stop_and_remove (conferencebin, &self->priv->transmitter_rtp_funnel, TRUE); + stop_and_remove (conferencebin, &self->priv->transmitter_rtcp_funnel, TRUE); + self->priv->extra_sources = fs_rtp_special_sources_destroy (self->priv->extra_sources); -- 2.9.4