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:
parent
8b838ff9ea
commit
c9278bfcdf
@ -403,33 +403,6 @@ input_curl_easy_free_indirect(struct input_curl *c)
|
||||
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.
|
||||
*
|
||||
@ -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();
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user