aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-11-06 18:36:38 +0100
committerMax Kellermann <max@duempel.org>2013-11-06 19:06:02 +0100
commitc9278bfcdff3620f6fcec3a7980d096f9339d024 (patch)
treef5975f640130eec0b72bca4c167964dcfb4aafa4 /src
parent8b838ff9ea2a08c99275531ed5f6b5ddfe4406fe (diff)
downloadmpd-c9278bfcdff3620f6fcec3a7980d096f9339d024.tar.gz
mpd-c9278bfcdff3620f6fcec3a7980d096f9339d024.tar.xz
mpd-c9278bfcdff3620f6fcec3a7980d096f9339d024.zip
input/curl: don't abort all requests on curl_multi_perform() error
Eliminate some complicated code that's not worth the trouble.
Diffstat (limited to 'src')
-rw-r--r--src/input/CurlInputPlugin.cxx47
1 files changed, 7 insertions, 40 deletions
diff --git a/src/input/CurlInputPlugin.cxx b/src/input/CurlInputPlugin.cxx
index 728a0c177..9869f5b58 100644
--- a/src/input/CurlInputPlugin.cxx
+++ b/src/input/CurlInputPlugin.cxx
@@ -404,33 +404,6 @@ input_curl_easy_free_indirect(struct input_curl *c)
}
/**
- * Abort and free all HTTP requests.
- *
- * Runs in the I/O thread. The caller must not hold locks.
- */
-static void
-input_curl_abort_all_requests(const Error &error)
-{
- assert(io_thread_inside());
- assert(error.IsDefined());
-
- while (!curl.requests.empty()) {
- struct input_curl *c = curl.requests.front();
- assert(!c->postponed_error.IsDefined());
-
- input_curl_easy_free(c);
-
- const ScopeLock protect(c->base.mutex);
-
- c->postponed_error.Set(error);
- c->base.ready = true;
-
- c->base.cond.broadcast();
- }
-
-}
-
-/**
* A HTTP request is finished.
*
* Runs in the I/O thread. The caller must not hold locks.
@@ -497,7 +470,7 @@ input_curl_info_read(void)
*
* Runs in the I/O thread. The caller must not hold locks.
*/
-static bool
+static void
input_curl_perform(void)
{
assert(io_thread_inside());
@@ -509,16 +482,10 @@ input_curl_perform(void)
mcode = curl_multi_perform(curl.multi, &running_handles);
} while (mcode == CURLM_CALL_MULTI_PERFORM);
- if (mcode != CURLM_OK && mcode != CURLM_CALL_MULTI_PERFORM) {
- Error error;
- error.Format(curlm_domain, mcode,
- "curl_multi_perform() failed: %s",
- curl_multi_strerror(mcode));
- input_curl_abort_all_requests(error);
- return false;
- }
-
- return true;
+ if (mcode != CURLM_OK && mcode != CURLM_CALL_MULTI_PERFORM)
+ FormatError(curlm_domain,
+ "curl_multi_perform() failed: %s",
+ curl_multi_strerror(mcode));
}
int
@@ -548,8 +515,8 @@ CurlSockets::PrepareSockets()
void
CurlSockets::DispatchSockets()
{
- if (input_curl_perform())
- input_curl_info_read();
+ input_curl_perform();
+ input_curl_info_read();
}
/*