Commit 28143f86 authored by Max Kellermann's avatar Max Kellermann

input/curl: merge _request_abort() into _request_done()

This is a trivial function. Merge some duplicate code, e.g. the g_cond_broadcast() call.
parent 76ec3d32
...@@ -413,25 +413,6 @@ input_curl_easy_free_indirect(struct input_curl *c) ...@@ -413,25 +413,6 @@ input_curl_easy_free_indirect(struct input_curl *c)
} }
/** /**
* Aborts and frees a running HTTP request.
*
* The caller must lock the mutex. Runs in the I/O thread.
*/
static void
input_curl_request_abort(struct input_curl *c, GError *error)
{
assert(c != NULL);
assert(c->postponed_error == NULL);
assert(error != NULL);
input_curl_easy_free(c);
c->postponed_error = error;
g_cond_broadcast(curl.cond);
}
/**
* Abort and free all HTTP requests. * Abort and free all HTTP requests.
* *
* The caller must lock the mutex. Runs in the I/O thread. * The caller must lock the mutex. Runs in the I/O thread.
...@@ -439,12 +420,19 @@ input_curl_request_abort(struct input_curl *c, GError *error) ...@@ -439,12 +420,19 @@ input_curl_request_abort(struct input_curl *c, GError *error)
static void static void
input_curl_abort_all_requests(GError *error) input_curl_abort_all_requests(GError *error)
{ {
assert(error != NULL);
while (curl.requests != NULL) { while (curl.requests != NULL) {
struct input_curl *is = curl.requests->data; struct input_curl *c = curl.requests->data;
input_curl_request_abort(is, g_error_copy(error)); assert(c->postponed_error == NULL);
input_curl_easy_free(c);
c->postponed_error = g_error_copy(error);
} }
g_error_free(error); g_error_free(error);
g_cond_broadcast(curl.cond);
} }
/** /**
...@@ -455,22 +443,22 @@ input_curl_abort_all_requests(GError *error) ...@@ -455,22 +443,22 @@ input_curl_abort_all_requests(GError *error)
static void static void
input_curl_request_done(struct input_curl *c, CURLcode result, long status) input_curl_request_done(struct input_curl *c, CURLcode result, long status)
{ {
assert(c != NULL);
assert(c->easy == NULL); assert(c->easy == NULL);
assert(c->base.ready); assert(c->base.ready);
assert(c->postponed_error == NULL);
if (result != CURLE_OK) { if (result != CURLE_OK) {
GError *error = g_error_new(curl_quark(), result, c->postponed_error = g_error_new(curl_quark(), result,
"curl failed: %s", "curl failed: %s",
c->error); c->error);
input_curl_request_abort(c, error);
} else if (status < 200 || status >= 300) { } else if (status < 200 || status >= 300) {
GError *error = g_error_new(curl_quark(), 0, c->postponed_error = g_error_new(curl_quark(), 0,
"got HTTP status %ld", "got HTTP status %ld",
status); status);
input_curl_request_abort(c, error);
} else {
g_cond_broadcast(curl.cond);
} }
g_cond_broadcast(curl.cond);
} }
static void static void
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment