diff options
author | 이문형 <iwings@gmail.com> | 2008-11-27 11:22:56 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2008-11-27 11:22:56 +0000 |
commit | 42f6a2bca1a74151bee3c1581e5c6de464e244c8 (patch) | |
tree | ca5fa88a509d783d4a8e62d3368c4c174a93c6e2 /gst/rtsp | |
parent | 6f13524166392a35c8577bba55da987e287e6991 (diff) |
gst/rtsp/gstrtspsrc.c: Prevent further read/write actions taken to the connect-failed socket by erroring out quickly....
Original commit message from CVS:
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.
Diffstat (limited to 'gst/rtsp')
-rw-r--r-- | gst/rtsp/gstrtspsrc.c | 16 |
1 files changed, 14 insertions, 2 deletions
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; } |