X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcurl.c;h=ac55953c1c327bce3b34bb1a568cfeedf90174a0;hb=d3db12b73a1c3c17a2dfc0ba96ec99490088c957;hp=f580cf2470c7236755eec187dc520da7690fe76d;hpb=d9ffeaf4422200ba37de773407e4fd9d8a84a72c;p=collectd.git diff --git a/src/curl.c b/src/curl.c index f580cf24..ac55953c 100644 --- a/src/curl.c +++ b/src/curl.c @@ -26,6 +26,7 @@ #include "plugin.h" #include "configfile.h" #include "utils_match.h" +#include "utils_time.h" #include @@ -568,6 +569,7 @@ static int cc_init (void) /* {{{ */ INFO ("curl plugin: No pages have been defined."); return (-1); } + curl_global_init (CURL_GLOBAL_SSL); return (0); } /* }}} int cc_init */ @@ -585,7 +587,8 @@ static void cc_submit (const web_page_t *wp, const web_match_t *wm, /* {{{ */ sstrncpy (vl.plugin, "curl", sizeof (vl.plugin)); sstrncpy (vl.plugin_instance, wp->instance, sizeof (vl.plugin_instance)); sstrncpy (vl.type, wm->type, sizeof (vl.type)); - sstrncpy (vl.type_instance, wm->instance, sizeof (vl.type_instance)); + if (wm->instance != NULL) + sstrncpy (vl.type_instance, wm->instance, sizeof (vl.type_instance)); plugin_dispatch_values (&vl); } /* }}} void cc_submit */ @@ -607,12 +610,13 @@ static void cc_submit_response_code (const web_page_t *wp, long code) /* {{{ */ plugin_dispatch_values (&vl); } /* }}} void cc_submit_response_code */ -static void cc_submit_response_time (const web_page_t *wp, double seconds) /* {{{ */ +static void cc_submit_response_time (const web_page_t *wp, /* {{{ */ + cdtime_t response_time) { value_t values[1]; value_list_t vl = VALUE_LIST_INIT; - values[0].gauge = seconds; + values[0].gauge = CDTIME_T_TO_DOUBLE (response_time); vl.values = values; vl.values_len = 1; @@ -628,39 +632,33 @@ static int cc_read_page (web_page_t *wp) /* {{{ */ { web_match_t *wm; int status; - struct timeval start, end; + cdtime_t start = 0; if (wp->response_time) - gettimeofday (&start, NULL); + start = cdtime (); wp->buffer_fill = 0; status = curl_easy_perform (wp->curl); if (status != CURLE_OK) { - ERROR ("curl plugin: curl_easy_perform failed with staus %i: %s", + ERROR ("curl plugin: curl_easy_perform failed with status %i: %s", status, wp->curl_errbuf); return (-1); } + if (wp->response_time) + cc_submit_response_time (wp, cdtime() - start); + if(wp->response_code) { long response_code = 0; status = curl_easy_getinfo(wp->curl, CURLINFO_RESPONSE_CODE, &response_code); if(status != CURLE_OK) { - ERROR ("curl plugin: curl_easy_getinfo failed with staus %i: %s", + ERROR ("curl plugin: Fetching response code failed with status %i: %s", status, wp->curl_errbuf); - return (-1); // TODO: do we need to return in here? this is nonfatal error + } else { + cc_submit_response_code(wp, response_code); } - cc_submit_response_code(wp, response_code); - } - - if (wp->response_time) - { - double secs = 0; - gettimeofday (&end, NULL); - secs += end.tv_sec - start.tv_sec; - secs += (end.tv_usec - start.tv_usec) / 1000000.0; - cc_submit_response_time (wp, secs); } for (wm = wp->matches; wm != NULL; wm = wm->next) @@ -682,6 +680,7 @@ static int cc_read_page (web_page_t *wp) /* {{{ */ } cc_submit (wp, wm, mv); + match_value_reset (mv); } /* for (wm = wp->matches; wm != NULL; wm = wm->next) */ return (0);