summaryrefslogtreecommitdiffstats
path: root/gst/rtpmanager/gstrtpsession.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2009-04-17 16:16:29 +0200
committerWim Taymans <wim.taymans@collabora.co.uk>2009-04-17 16:16:29 +0200
commit71076cad544d34cc7fa1998313af0fdb179969ee (patch)
tree46666bce1d53216d6d6966c4f88c7be3eeaf4a9a /gst/rtpmanager/gstrtpsession.c
parent63044be8e5d9c6f2fedae13bf0016eeeea01e63b (diff)
downloadgst-plugins-bad-71076cad544d34cc7fa1998313af0fdb179969ee.tar.gz
gst-plugins-bad-71076cad544d34cc7fa1998313af0fdb179969ee.tar.bz2
gst-plugins-bad-71076cad544d34cc7fa1998313af0fdb179969ee.zip
rtpsession: join the RTCP thread
Avoid a case where a joinable thread would be left unjoined, which leaked the thread structure. Fixes #577318.
Diffstat (limited to 'gst/rtpmanager/gstrtpsession.c')
-rw-r--r--gst/rtpmanager/gstrtpsession.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/gst/rtpmanager/gstrtpsession.c b/gst/rtpmanager/gstrtpsession.c
index e2a6927f..035d82a8 100644
--- a/gst/rtpmanager/gstrtpsession.c
+++ b/gst/rtpmanager/gstrtpsession.c
@@ -967,6 +967,11 @@ start_rtcp_thread (GstRtpSession * rtpsession)
GST_RTP_SESSION_LOCK (rtpsession);
rtpsession->priv->stop_thread = FALSE;
if (rtpsession->priv->thread_stopped) {
+ /* if the thread stopped, and we still have a handle to the thread, join it
+ * now. We can safely join with the lock held, the thread will not take it
+ * anymore. */
+ if (rtpsession->priv->thread)
+ g_thread_join (rtpsession->priv->thread);
/* only create a new thread if the old one was stopped. Otherwise we can
* just reuse the currently running one. */
rtpsession->priv->thread =