gst/rtsp/gstrtspsrc.c: Fix 3 pad leaks. Fixes #496983.
authorTommi Myöhänen <ext-tommi.myohanen@nokia.com>
Thu, 15 Nov 2007 17:35:18 +0000 (17:35 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Thu, 15 Nov 2007 17:35:18 +0000 (17:35 +0000)
Original commit message from CVS:
Patch by: Tommi Myöhänen  <ext-tommi dot myohanen at nokia dot com>
* gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_stream_free),
(gst_rtspsrc_stream_configure_tcp):
Fix 3 pad leaks. Fixes #496983.

ChangeLog
gst/rtsp/gstrtspsrc.c

index d69dddc71319039041bc8ed9cfc696c907fbf49f..46d95344c96b45ce2d94f48ab280757545069fd4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2007-11-15  Wim Taymans  <wim.taymans@gmail.com>
+
+       Patch by: Tommi Myöhänen  <ext-tommi dot myohanen at nokia dot com>
+
+       * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_stream_free),
+       (gst_rtspsrc_stream_configure_tcp):
+       Fix 3 pad leaks. Fixes #496983.
+
 2007-11-15  Wim Taymans  <wim.taymans@gmail.com>
 
        Patch by: Tommi Myöhänen  <ext-tommi dot myohanen at nokia dot com>
index 98d1c597811adf290062b14eff601977f297e4e4..aa13ad1242619eea449320a27559028fa23617ad 100644 (file)
@@ -692,8 +692,6 @@ gst_rtspsrc_stream_free (GstRTSPSrc * src, GstRTSPStream * stream)
       pad = gst_element_get_pad (udpsrc, "src");
       if (stream->channelpad[i]) {
         gst_pad_unlink (pad, stream->channelpad[i]);
-        gst_object_unref (stream->channelpad[i]);
-        stream->channelpad[i] = NULL;
       }
 
       gst_element_set_state (udpsrc, GST_STATE_NULL);
@@ -701,6 +699,10 @@ gst_rtspsrc_stream_free (GstRTSPSrc * src, GstRTSPStream * stream)
       gst_object_unref (stream->udpsrc[i]);
       stream->udpsrc[i] = NULL;
     }
+    if (stream->channelpad[i]) {
+      gst_object_unref (stream->channelpad[i]);
+      stream->channelpad[i] = NULL;
+    }
   }
   if (stream->udpsink) {
     gst_element_set_state (stream->udpsink, GST_STATE_NULL);
@@ -716,6 +718,10 @@ gst_rtspsrc_stream_free (GstRTSPSrc * src, GstRTSPStream * stream)
     }
     stream->srcpad = NULL;
   }
+  if (stream->rtcppad) {
+    gst_object_unref (stream->rtcppad);
+    stream->rtcppad = NULL;
+  }
   g_free (stream);
 }
 
@@ -1875,6 +1881,8 @@ gst_rtspsrc_stream_configure_tcp (GstRTSPSrc * src, GstRTSPStream * stream,
     /* and link */
     if (pad)
       gst_pad_link (pad, stream->rtcppad);
+
+    gst_object_unref (template);
   }
   return TRUE;
 }