rtspsrc: don't reuse udp sockets
authorWim Taymans <wim.taymans@collabora.co.uk>
Tue, 6 Jul 2010 16:22:24 +0000 (18:22 +0200)
committerWim Taymans <wim.taymans@collabora.co.uk>
Wed, 4 Aug 2010 08:40:23 +0000 (10:40 +0200)
Don't reuse sockets but make the udpsrc element fail the state change when the
socket is already in use. If we don't prevent reuse, we might end up using the same
port for different streams in some cases.

Fixes #622017

gst/rtsp/gstrtspsrc.c

index 855cf8652b6e6f3c94678a029e8ec49e0aac2081..5a731405e14963c79cd1e29edf527b787e24385a 100644 (file)
@@ -1441,7 +1441,7 @@ again:
   udpsrc0 = gst_element_make_from_uri (GST_URI_SRC, host, NULL);
   if (udpsrc0 == NULL)
     goto no_udp_protocol;
-  g_object_set (G_OBJECT (udpsrc0), "port", tmp_rtp, NULL);
+  g_object_set (G_OBJECT (udpsrc0), "port", tmp_rtp, "reuse", FALSE, NULL);
 
   ret = gst_element_set_state (udpsrc0, GST_STATE_PAUSED);
   if (ret == GST_STATE_CHANGE_FAILURE) {
@@ -1492,7 +1492,7 @@ again:
   if (src->client_port_range.max > 0 && tmp_rtcp >= src->client_port_range.max)
     goto no_ports;
 
-  g_object_set (G_OBJECT (udpsrc1), "port", tmp_rtcp, NULL);
+  g_object_set (G_OBJECT (udpsrc1), "port", tmp_rtcp, "reuse", FALSE, NULL);
 
   GST_DEBUG_OBJECT (src, "starting RTCP on port %d", tmp_rtcp);
   ret = gst_element_set_state (udpsrc1, GST_STATE_PAUSED);