X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fapache.c;h=f0ab22a80047e9e3e3d367348aa556f614b0fc51;hb=96e0f2341bace029acefe0a88bab96ae326c0ff5;hp=506ba84ec23e58d9396e9165454c3a08a6e33be3;hpb=a898c17330d9a2039bcdb8f7e6dbedba516a6cd8;p=collectd.git diff --git a/src/apache.c b/src/apache.c index 506ba84e..f0ab22a8 100644 --- a/src/apache.c +++ b/src/apache.c @@ -373,6 +373,7 @@ static int init_host (apache_t *st) /* {{{ */ return (-1); } + curl_easy_setopt (st->curl, CURLOPT_NOSIGNAL, 1L); curl_easy_setopt (st->curl, CURLOPT_WRITEFUNCTION, apache_curl_callback); curl_easy_setopt (st->curl, CURLOPT_WRITEDATA, st); @@ -424,24 +425,25 @@ static int init_host (apache_t *st) /* {{{ */ } curl_easy_setopt (st->curl, CURLOPT_URL, st->url); - curl_easy_setopt (st->curl, CURLOPT_FOLLOWLOCATION, 1); + curl_easy_setopt (st->curl, CURLOPT_FOLLOWLOCATION, 1L); + curl_easy_setopt (st->curl, CURLOPT_MAXREDIRS, 50L); if (st->verify_peer != 0) { - curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYPEER, 1); + curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYPEER, 1L); } else { - curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYPEER, 0); + curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYPEER, 0L); } if (st->verify_host != 0) { - curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYHOST, 2); + curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYHOST, 2L); } else { - curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYHOST, 0); + curl_easy_setopt (st->curl, CURLOPT_SSL_VERIFYHOST, 0L); } if (st->cacert != NULL) @@ -476,13 +478,13 @@ static void submit_value (const char *type, const char *type_instance, plugin_dispatch_values (&vl); } /* void submit_value */ -static void submit_counter (const char *type, const char *type_instance, - counter_t c, apache_t *st) +static void submit_derive (const char *type, const char *type_instance, + derive_t c, apache_t *st) { value_t v; - v.counter = c; + v.derive = c; submit_value (type, type_instance, v, st); -} /* void submit_counter */ +} /* void submit_derive */ static void submit_gauge (const char *type, const char *type_instance, gauge_t g, apache_t *st) @@ -610,7 +612,7 @@ static int apache_read_host (user_data_t *user_data) /* {{{ */ assert (st->curl != NULL); st->apache_buffer_fill = 0; - if (curl_easy_perform (st->curl) != 0) + if (curl_easy_perform (st->curl) != CURLE_OK) { ERROR ("apache: curl_easy_perform failed: %s", st->apache_curl_error); @@ -644,11 +646,11 @@ static int apache_read_host (user_data_t *user_data) /* {{{ */ { if ((strcmp (fields[0], "Total") == 0) && (strcmp (fields[1], "Accesses:") == 0)) - submit_counter ("apache_requests", "", + submit_derive ("apache_requests", "", atoll (fields[2]), st); else if ((strcmp (fields[0], "Total") == 0) && (strcmp (fields[1], "kBytes:") == 0)) - submit_counter ("apache_bytes", "", + submit_derive ("apache_bytes", "", 1024LL * atoll (fields[2]), st); } else if (fields_num == 2) @@ -669,9 +671,18 @@ static int apache_read_host (user_data_t *user_data) /* {{{ */ return (0); } /* }}} int apache_read_host */ +static int apache_init (void) /* {{{ */ +{ + /* Call this while collectd is still single-threaded to avoid + * initialization issues in libgcrypt. */ + curl_global_init (CURL_GLOBAL_SSL); + return (0); +} /* }}} int apache_init */ + void module_register (void) { plugin_register_complex_config ("apache", config); + plugin_register_init ("apache", apache_init); } /* void module_register */ /* vim: set sw=8 noet fdm=marker : */