From 11626e48bfb1dbf265e7eba3777c77d5ab6bd72b Mon Sep 17 00:00:00 2001
From: Max Kellermann <max@duempel.org>
Date: Fri, 26 Aug 2011 19:28:09 +0200
Subject: [PATCH] input/curl: implement a hard-coded timeout of 10 seconds

Be sure to stop the operation at some point when the server isn't
responding.
---
 NEWS                          | 1 +
 src/input/curl_input_plugin.c | 3 +++
 2 files changed, 4 insertions(+)

diff --git a/NEWS b/NEWS
index b23c4a087..0bf08d0ab 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,7 @@ ver 0.16.4 (2011/??/??)
 * apply follow_inside_symlinks to absolute symlinks
 * input:
   - curl: limit the receive buffer size
+  - curl: implement a hard-coded timeout of 10 seconds
 * decoder:
   - ffmpeg: workaround for semantic API change in recent ffmpeg versions
   - flac: validate the sample rate when scanning the tag
diff --git a/src/input/curl_input_plugin.c b/src/input/curl_input_plugin.c
index d6424c2c6..2c4ac2ff8 100644
--- a/src/input/curl_input_plugin.c
+++ b/src/input/curl_input_plugin.c
@@ -680,6 +680,9 @@ input_curl_easy_init(struct input_curl *c, GError **error_r)
 	curl_easy_setopt(c->easy, CURLOPT_MAXREDIRS, 5);
 	curl_easy_setopt(c->easy, CURLOPT_FAILONERROR, true);
 	curl_easy_setopt(c->easy, CURLOPT_ERRORBUFFER, c->error);
+	curl_easy_setopt(c->easy, CURLOPT_NOPROGRESS, 1l);
+	curl_easy_setopt(c->easy, CURLOPT_NOSIGNAL, 1l);
+	curl_easy_setopt(c->easy, CURLOPT_CONNECTTIMEOUT, 10l);
 
 	if (proxy != NULL)
 		curl_easy_setopt(c->easy, CURLOPT_PROXY, proxy);