summaryrefslogtreecommitdiff
path: root/ext/curl
diff options
context:
space:
mode:
authorPatricia Muscalu <patricia@axis.com>2015-09-08 14:37:57 +0200
committerTim-Philipp Müller <tim@centricular.com>2016-04-04 17:48:55 +0100
commit0fbbbd042a115e2520f7c99d874617d88a711878 (patch)
tree04c5ab5d29a83da768aca7ee361edbde82236485 /ext/curl
parent8cde41e68c6ce37a7defe64758a5225e0c4259a1 (diff)
curlsink: catch an unknown error
In this case the socket callback has not been called by libcurl and the curlsink has not been notified about any connection problems by libcurl. This indicates that it's a bug in libcurl so catch it as an unknown error. https://bugzilla.gnome.org/show_bug.cgi?id=754432
Diffstat (limited to 'ext/curl')
-rw-r--r--ext/curl/gstcurlbasesink.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/ext/curl/gstcurlbasesink.c b/ext/curl/gstcurlbasesink.c
index 575c241ca..5728ab2cc 100644
--- a/ext/curl/gstcurlbasesink.c
+++ b/ext/curl/gstcurlbasesink.c
@@ -980,6 +980,15 @@ handle_transfer (GstCurlBaseSink * sink)
GST_OBJECT_LOCK (sink);
if (sink->socket_type == CURLSOCKTYPE_ACCEPT) {
+ /* FIXME: remove this again once we can depend on libcurl > 7.44.0,
+ * see https://github.com/bagder/curl/issues/405.
+ */
+ if (G_UNLIKELY (sink->fd.fd < 0)) {
+ sink->error = g_strdup_printf ("unknown error");
+ retval = GST_FLOW_ERROR;
+ GST_OBJECT_UNLOCK (sink);
+ goto fail;
+ }
if (!gst_poll_remove_fd (sink->fdset, &sink->fd)) {
sink->error = g_strdup_printf ("failed to remove fd");
retval = GST_FLOW_ERROR;