rtpsession: join the RTCP thread
authorWim Taymans <wim.taymans@collabora.co.uk>
Fri, 17 Apr 2009 14:16:29 +0000 (16:16 +0200)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 11 Aug 2009 01:30:41 +0000 (02:30 +0100)
Avoid a case where a joinable thread would be left unjoined, which leaked the
thread structure.
Fixes #577318.

gst/rtpmanager/gstrtpsession.c

index e2a6927..035d82a 100644 (file)
@@ -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 =