summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--gst/rtsp/gstrtspsrc.c16
2 files changed, 22 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 5123a4ce..3714c29e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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;
}