diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | gst/rtsp/gstrtspsrc.c | 16 |
2 files changed, 22 insertions, 2 deletions
@@ -1,3 +1,11 @@ +2008-11-27 Wim Taymans <wim.taymans@collabora.co.uk> + + Patch by: 이문형 <iwings at gmail dot com> + + * gst/rtsp/gstrtspsrc.c: (gst_rtspsrc_loop_udp): + Prevent further read/write actions taken to the connect-failed socket by + erroring out quickly. See #562258. + 2008-11-26 Stefan Kost <ensonic@users.sf.net> * tests/examples/level/level-example.c: diff --git a/gst/rtsp/gstrtspsrc.c b/gst/rtsp/gstrtspsrc.c index 814cab8d..6bc6fc37 100644 --- a/gst/rtsp/gstrtspsrc.c +++ b/gst/rtsp/gstrtspsrc.c @@ -2914,7 +2914,10 @@ gst_rtspsrc_loop_udp (GstRTSPSrc * src) GST_ELEMENT_WARNING (src, RESOURCE, READ, (NULL), ("The server closed the connection.")); gst_rtsp_connection_close (src->connection); - gst_rtsp_connection_connect (src->connection, src->ptcp_timeout); + res = + gst_rtsp_connection_connect (src->connection, src->ptcp_timeout); + if (res < 0) + goto connect_error; continue; default: goto receive_error; @@ -3025,11 +3028,20 @@ handle_request_failed: g_free (str); return GST_FLOW_ERROR; } +connect_error: + { + gchar *str = gst_rtsp_strresult (res); + + GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ_WRITE, (NULL), + ("Could not connect to server. (%s)", str)); + g_free (str); + return GST_FLOW_ERROR; + } no_protocols: { src->cur_protocols = 0; /* no transport possible, post an error and stop */ - GST_ELEMENT_ERROR (src, RESOURCE, READ, (NULL), + GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ_WRITE, (NULL), ("Could not connect to server, no protocols left")); return GST_FLOW_ERROR; } |