From 87768c58e44c2d879b6d0c28f849fd18741dc995 Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Sat, 4 Apr 2015 22:20:07 +0200 Subject: [PATCH] curl_xml: Add support for specifying a connection timeout --- src/collectd.conf.pod | 2 ++ src/curl_xml.c | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/collectd.conf.pod b/src/collectd.conf.pod index 9dd162e2..35958b33 100644 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@ -1673,6 +1673,8 @@ Examples: =item B I +=item B I + These options behave exactly equivalent to the appropriate options of the I. Please see there for a detailed description. diff --git a/src/curl_xml.c b/src/curl_xml.c index c9f06518..c67d9a3a 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; @@ -884,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, db->timeout); + else + curl_easy_setopt (db->curl, CURLOPT_TIMEOUT_MS, + CDTIME_T_TO_MS(plugin_get_interval())); + return (0); } /* }}} int cx_init_curl */ @@ -909,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); @@ -954,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); -- 2.30.2