diff options
author | Sebastian Dröge <sebastian@centricular.com> | 2016-02-28 13:01:34 +0200 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2016-02-28 13:01:34 +0200 |
commit | bf5a72a6dded48077b182abd52b4f12a9e6392bf (patch) | |
tree | e15ad9c4097ac624c1eac33b2a8a8893e6a50f44 | |
parent | 03d2ae154e3a36053494912185c0d1964633f30b (diff) | |
download | gstreamer-plugins-good-bf5a72a6dded48077b182abd52b4f12a9e6392bf.tar.gz |
rtspsrc: Properly error out if binding the UDP sockets fails
udpsrc is not returning us a socket in that case.
-rw-r--r-- | gst/rtsp/gstrtspsrc.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index acbddb000..a57fff043 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -3545,6 +3545,9 @@ gst_rtspsrc_stream_configure_udp_sinks (GstRTSPSrc * src, /* configure socket, we give it the same UDP socket as the udpsrc for RTP * so that NAT firewalls will open a hole for us */ g_object_get (G_OBJECT (stream->udpsrc[0]), "used-socket", &socket, NULL); + if (!socket) + goto no_socket; + GST_DEBUG_OBJECT (src, "RTP UDP src has sock %p", socket); /* configure socket and make sure udpsink does not close it when shutting * down, it belongs to udpsrc after all. */ @@ -3600,6 +3603,9 @@ gst_rtspsrc_stream_configure_udp_sinks (GstRTSPSrc * src, * because some servers check the port number of where it sends RTCP to identify * the RTCP packets it receives */ g_object_get (G_OBJECT (stream->udpsrc[1]), "used-socket", &socket, NULL); + if (!socket) + goto no_socket; + GST_DEBUG_OBJECT (src, "RTCP UDP src has sock %p", socket); /* configure socket and make sure udpsink does not close it when shutting * down, it belongs to udpsrc after all. */ @@ -3637,17 +3643,22 @@ gst_rtspsrc_stream_configure_udp_sinks (GstRTSPSrc * src, /* ERRORS */ no_destination: { - GST_DEBUG_OBJECT (src, "no destination address specified"); + GST_ERROR_OBJECT (src, "no destination address specified"); return FALSE; } no_sink_element: { - GST_DEBUG_OBJECT (src, "no UDP sink element found"); + GST_ERROR_OBJECT (src, "no UDP sink element found"); return FALSE; } no_fakesrc_element: { - GST_DEBUG_OBJECT (src, "no fakesrc element found"); + GST_ERROR_OBJECT (src, "no fakesrc element found"); + return FALSE; + } +no_socket: + { + GST_ERROR_OBJECT (src, "failed to create socket"); return FALSE; } } |