input/curl: merge _request_abort() into _request_done()
This is a trivial function. Merge some duplicate code, e.g. the g_cond_broadcast() call.
This commit is contained in:
parent
76ec3d3248
commit
28143f86f9
@ -412,25 +412,6 @@ input_curl_easy_free_indirect(struct input_curl *c)
|
|||||||
assert(c->easy == NULL);
|
assert(c->easy == NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 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.
|
||||||
*
|
*
|
||||||
@ -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)
|
|||||||
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
|
||||||
|
Loading…
Reference in New Issue
Block a user