X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcurl_xml.c;h=32a48c511afcf6e9c636117a0955cf96b882d816;hb=76d9c9033e021cbdb0da0fc2b0ad23bc3d7ad487;hp=c0ab6fdbed7721374ccbff5e180dce6e897a7690;hpb=01f4a6eb87b83ccd2f77e0116e5bd09645c731d5;p=collectd.git diff --git a/src/curl_xml.c b/src/curl_xml.c index c0ab6fdb..32a48c51 100644 --- a/src/curl_xml.c +++ b/src/curl_xml.c @@ -81,6 +81,7 @@ struct cx_s /* {{{ */ _Bool verify_host; char *cacert; char *post_body; + int timeout; struct curl_slist *headers; cx_namespace_t *namespaces; @@ -842,6 +843,8 @@ static int cx_init_curl (cx_t *db) /* {{{ */ curl_easy_setopt (db->curl, CURLOPT_USERAGENT, COLLECTD_USERAGENT); curl_easy_setopt (db->curl, CURLOPT_ERRORBUFFER, db->curl_errbuf); curl_easy_setopt (db->curl, CURLOPT_URL, db->url); + curl_easy_setopt (db->curl, CURLOPT_FOLLOWLOCATION, 1L); + curl_easy_setopt (db->curl, CURLOPT_MAXREDIRS, 50L); if (db->user != NULL) { @@ -882,6 +885,12 @@ static int cx_init_curl (cx_t *db) /* {{{ */ if (db->post_body != NULL) curl_easy_setopt (db->curl, CURLOPT_POSTFIELDS, db->post_body); + if (db->timeout >= 0) + curl_easy_setopt (db->curl, CURLOPT_TIMEOUT_MS, (long) db->timeout); + else + curl_easy_setopt (db->curl, CURLOPT_TIMEOUT_MS, + CDTIME_T_TO_MS(plugin_get_interval())); + return (0); } /* }}} int cx_init_curl */ @@ -907,6 +916,8 @@ static int cx_config_add_url (oconfig_item_t *ci) /* {{{ */ } memset (db, 0, sizeof (*db)); + db->timeout = -1; + if (strcasecmp ("URL", ci->key) == 0) { status = cf_util_get_string (ci, &db->url); @@ -952,6 +963,8 @@ static int cx_config_add_url (oconfig_item_t *ci) /* {{{ */ status = cf_util_get_string (child, &db->post_body); else if (strcasecmp ("Namespace", child->key) == 0) status = cx_config_add_namespace (db, child); + else if (strcasecmp ("Timeout", child->key) == 0) + status = cf_util_get_int (child, &db->timeout); else { WARNING ("curl_xml plugin: Option `%s' not allowed here.", child->key);