X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcurl.c;h=ac4cc512c63fd51dcdd9190814aca5e0eaf1cc7d;hb=dab48f284f9d4bb6ae98244310c5cdb6c5d91bf3;hp=0e5d2cfa7ea0a1dca1fab6f00780773bc1f07b8e;hpb=f2389f97fbec15f49dcd1d9b06b3b6bbd0837e8a;p=collectd.git diff --git a/src/curl.c b/src/curl.c index 0e5d2cfa..ac4cc512 100644 --- a/src/curl.c +++ b/src/curl.c @@ -66,6 +66,7 @@ struct web_page_s /* {{{ */ char *post_body; _Bool response_time; _Bool response_code; + int timeout; CURL *curl; char curl_errbuf[CURL_ERROR_SIZE]; @@ -326,7 +327,10 @@ static int cc_config_add_match (web_page_t *page, /* {{{ */ } /* while (status == 0) */ if (status != 0) + { + cc_web_match_free (match); return (status); + } match->match = match_create_simple (match->regex, match->exclude_regex, match->dstype); @@ -410,6 +414,14 @@ static int cc_page_init_curl (web_page_t *wp) /* {{{ */ if (wp->post_body != NULL) curl_easy_setopt (wp->curl, CURLOPT_POSTFIELDS, wp->post_body); +#ifdef HAVE_CURLOPT_TIMEOUT_MS + if (wp->timeout >= 0) + curl_easy_setopt (wp->curl, CURLOPT_TIMEOUT_MS, (long) wp->timeout); + else + curl_easy_setopt (wp->curl, CURLOPT_TIMEOUT_MS, + CDTIME_T_TO_MS(plugin_get_interval())); +#endif + return (0); } /* }}} int cc_page_init_curl */ @@ -440,6 +452,7 @@ static int cc_config_add_page (oconfig_item_t *ci) /* {{{ */ page->verify_host = 1; page->response_time = 0; page->response_code = 0; + page->timeout = -1; page->instance = strdup (ci->values[0].value.string); if (page->instance == NULL) @@ -480,6 +493,8 @@ static int cc_config_add_page (oconfig_item_t *ci) /* {{{ */ status = cc_config_append_string ("Header", &page->headers, child); else if (strcasecmp ("Post", child->key) == 0) status = cf_util_get_string (child, &page->post_body); + else if (strcasecmp ("Timeout", child->key) == 0) + status = cf_util_get_int (child, &page->timeout); else { WARNING ("curl plugin: Option `%s' not allowed here.", child->key); @@ -653,7 +668,7 @@ static int cc_read_page (web_page_t *wp) /* {{{ */ 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); } @@ -666,7 +681,7 @@ static int cc_read_page (web_page_t *wp) /* {{{ */ long response_code = 0; status = curl_easy_getinfo(wp->curl, CURLINFO_RESPONSE_CODE, &response_code); if(status != CURLE_OK) { - ERROR ("curl plugin: Fetching response code failed with staus %i: %s", + ERROR ("curl plugin: Fetching response code failed with status %i: %s", status, wp->curl_errbuf); } else { cc_submit_response_code(wp, response_code);