diff options
author | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2010-10-05 16:56:49 +0200 |
---|---|---|
committer | Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk> | 2010-10-05 17:08:21 +0200 |
commit | 216887d599f0a5961d59cfc6c7eb12881b3831fd (patch) | |
tree | 0a774cd06b7eaa7d4f4258b306eda784914295a4 /gst/sdp | |
parent | 6c96f8cf1eeb26b42eb20ade28f9f9caa0a480b6 (diff) |
sdpdemux: error out if no streams found in sdp message
Diffstat (limited to 'gst/sdp')
-rw-r--r-- | gst/sdp/gstsdpdemux.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gst/sdp/gstsdpdemux.c b/gst/sdp/gstsdpdemux.c index d47440f5b..1dc397353 100644 --- a/gst/sdp/gstsdpdemux.c +++ b/gst/sdp/gstsdpdemux.c @@ -454,6 +454,9 @@ gst_sdp_demux_create_stream (GstSDPDemux * demux, GstSDPMessage * sdp, gint idx) goto no_connection; } + if (!conn->address) + goto no_connection; + stream->destination = conn->address; stream->ttl = conn->ttl; stream->multicast = is_multicast_address (stream->destination); @@ -1384,6 +1387,9 @@ gst_sdp_demux_start (GstSDPDemux * demux) for (i = 0; i < n_streams; i++) { stream = gst_sdp_demux_create_stream (demux, &sdp, i); + if (!stream) + continue; + GST_DEBUG_OBJECT (demux, "configuring transport for stream %p", stream); if (!gst_sdp_demux_stream_configure_udp (demux, stream)) @@ -1391,6 +1397,9 @@ gst_sdp_demux_start (GstSDPDemux * demux) if (!gst_sdp_demux_stream_configure_udp_sink (demux, stream)) goto transport_failed; } + + if (!demux->streams) + goto no_streams; } /* set target state on session manager */ @@ -1435,6 +1444,14 @@ could_not_parse: GST_SDP_STREAM_UNLOCK (demux); return FALSE; } +no_streams: + { + gst_sdp_message_uninit (&sdp); + GST_ELEMENT_ERROR (demux, STREAM, TYPE_NOT_FOUND, (NULL), + ("No streams in SDP message.")); + GST_SDP_STREAM_UNLOCK (demux); + return FALSE; + } sent_redirect: { /* avoid hanging if redirect not handled */ |