From 2c3aa2f09cc8c02cc32af12d415181a0c42c9ef6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Imre=20E=C3=B6rs?= Date: Tue, 15 Nov 2016 16:20:10 +0100 Subject: [PATCH] curl: transfer hangs in case connection was cut between client and server https://bugzilla.gnome.org/show_bug.cgi?id=774485 --- ext/curl/gstcurlbasesink.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/ext/curl/gstcurlbasesink.c b/ext/curl/gstcurlbasesink.c index 5728ab2cc7..40c61826d7 100644 --- a/ext/curl/gstcurlbasesink.c +++ b/ext/curl/gstcurlbasesink.c @@ -705,6 +705,21 @@ gst_curl_base_sink_transfer_set_common_options_unlocked (GstCurlBaseSink * sink) curl_easy_strerror (res)); return FALSE; } + /* Time out in case transfer speed in bytes per second stay below + * CURLOPT_LOW_SPEED_LIMIT during CURLOPT_LOW_SPEED_TIME */ + res = curl_easy_setopt (sink->curl, CURLOPT_LOW_SPEED_LIMIT, 1L); + if (res != CURLE_OK) { + sink->error = g_strdup_printf ("failed to set low speed limit: %s", + curl_easy_strerror (res)); + return FALSE; + } + res = curl_easy_setopt (sink->curl, CURLOPT_LOW_SPEED_TIME, + (long)sink->timeout); + if (res != CURLE_OK) { + sink->error = g_strdup_printf ("failed to set low speed time: %s", + curl_easy_strerror (res)); + return FALSE; + } GST_LOG ("common options set"); return TRUE;