From 28143f86f979bb81e2daf7847b7d5c8dc6ff9886 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Thu, 15 Sep 2011 08:20:41 +0200 Subject: input/curl: merge _request_abort() into _request_done() This is a trivial function. Merge some duplicate code, e.g. the g_cond_broadcast() call. --- src/input/curl_input_plugin.c | 50 ++++++++++++++++--------------------------- 1 file changed, 19 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/input/curl_input_plugin.c b/src/input/curl_input_plugin.c index 560945215..d06125f94 100644 --- a/src/input/curl_input_plugin.c +++ b/src/input/curl_input_plugin.c @@ -412,25 +412,6 @@ input_curl_easy_free_indirect(struct input_curl *c) 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. * @@ -439,12 +420,19 @@ input_curl_request_abort(struct input_curl *c, GError *error) static void input_curl_abort_all_requests(GError *error) { + assert(error != NULL); + while (curl.requests != NULL) { - struct input_curl *is = curl.requests->data; - input_curl_request_abort(is, g_error_copy(error)); + struct input_curl *c = curl.requests->data; + assert(c->postponed_error == NULL); + + input_curl_easy_free(c); + c->postponed_error = g_error_copy(error); } g_error_free(error); + + g_cond_broadcast(curl.cond); } /** @@ -455,22 +443,22 @@ input_curl_abort_all_requests(GError *error) static void input_curl_request_done(struct input_curl *c, CURLcode result, long status) { + assert(c != NULL); assert(c->easy == NULL); assert(c->base.ready); + assert(c->postponed_error == NULL); if (result != CURLE_OK) { - GError *error = g_error_new(curl_quark(), result, - "curl failed: %s", - c->error); - input_curl_request_abort(c, error); + c->postponed_error = g_error_new(curl_quark(), result, + "curl failed: %s", + c->error); } else if (status < 200 || status >= 300) { - GError *error = g_error_new(curl_quark(), 0, - "got HTTP status %ld", - status); - input_curl_request_abort(c, error); - } else { - g_cond_broadcast(curl.cond); + c->postponed_error = g_error_new(curl_quark(), 0, + "got HTTP status %ld", + status); } + + g_cond_broadcast(curl.cond); } static void -- cgit v1.2.3