input/curl: don't abort all requests on curl_multi_perform() error

Eliminate some complicated code that's not worth the trouble.
This commit is contained in:
Max Kellermann 2013-11-06 18:36:38 +01:00
parent 8b838ff9ea
commit c9278bfcdf

View File

@ -403,33 +403,6 @@ input_curl_easy_free_indirect(struct input_curl *c)
assert(c->easy == nullptr); assert(c->easy == nullptr);
} }
/**
* 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. * A HTTP request is finished.
* *
@ -497,7 +470,7 @@ input_curl_info_read(void)
* *
* Runs in the I/O thread. The caller must not hold locks. * Runs in the I/O thread. The caller must not hold locks.
*/ */
static bool static void
input_curl_perform(void) input_curl_perform(void)
{ {
assert(io_thread_inside()); assert(io_thread_inside());
@ -509,16 +482,10 @@ input_curl_perform(void)
mcode = curl_multi_perform(curl.multi, &running_handles); mcode = curl_multi_perform(curl.multi, &running_handles);
} while (mcode == CURLM_CALL_MULTI_PERFORM); } while (mcode == CURLM_CALL_MULTI_PERFORM);
if (mcode != CURLM_OK && mcode != CURLM_CALL_MULTI_PERFORM) { if (mcode != CURLM_OK && mcode != CURLM_CALL_MULTI_PERFORM)
Error error; FormatError(curlm_domain,
error.Format(curlm_domain, mcode, "curl_multi_perform() failed: %s",
"curl_multi_perform() failed: %s", curl_multi_strerror(mcode));
curl_multi_strerror(mcode));
input_curl_abort_all_requests(error);
return false;
}
return true;
} }
int int
@ -548,8 +515,8 @@ CurlSockets::PrepareSockets()
void void
CurlSockets::DispatchSockets() CurlSockets::DispatchSockets()
{ {
if (input_curl_perform()) input_curl_perform();
input_curl_info_read(); input_curl_info_read();
} }
/* /*