Code

curl-based plugins: disable Timeout option if libcurl < 7.16.2
authorMarc Fournier <marc.fournier@camptocamp.com>
Wed, 8 Apr 2015 20:58:22 +0000 (22:58 +0200)
committerMarc Fournier <marc.fournier@camptocamp.com>
Wed, 8 Apr 2015 22:08:59 +0000 (00:08 +0200)
This could be done better, but as it's a non-essential feature and
7.16.2 is 8 years old, I favor not over-complicating things.

configure.ac
src/apache.c
src/ascent.c
src/bind.c
src/curl.c
src/curl_json.c
src/curl_xml.c
src/nginx.c
src/write_http.c

index c83805e3b1c46790935cf182b15998c860c9a08b..025bfa6fd79f9255d37a355a388df50556ac3821 100644 (file)
@@ -1700,6 +1700,10 @@ then
                 [have_curlopt_username="yes"],
                 [have_curlopt_username="no"],
                 [[#include <curl/curl.h>]])
+               AC_CHECK_DECL(CURLOPT_TIMEOUT_MS,
+                [have_curlopt_timeout="yes"],
+                [have_curlopt_timeout="no"],
+                [[#include <curl/curl.h>]])
        fi
 fi
 if test "x$with_libcurl" = "xyes"
@@ -1713,6 +1717,11 @@ then
        then
                AC_DEFINE(HAVE_CURLOPT_USERNAME, 1, [Define if libcurl supports CURLOPT_USERNAME option.])
        fi
+
+       if test "x$have_curlopt_timeout" = "xyes"
+       then
+               AC_DEFINE(HAVE_CURLOPT_TIMEOUT_MS, 1, [Define if libcurl supports CURLOPT_TIMEOUT_MS option.])
+       fi
 fi
 AM_CONDITIONAL(BUILD_WITH_LIBCURL, test "x$with_libcurl" = "xyes")
 # }}}
index 0d915b07d29a5b2e83db736fb0668e3570140c83..086a39c814541a658f9d539f5c532860867b07ea 100644 (file)
@@ -372,11 +372,13 @@ static int init_host (apache_t *st) /* {{{ */
        if (st->cacert != NULL)
                curl_easy_setopt (st->curl, CURLOPT_CAINFO, st->cacert);
 
+#ifdef HAVE_CURLOPT_TIMEOUT_MS
        if (st->timeout >= 0)
                curl_easy_setopt (st->curl, CURLOPT_TIMEOUT_MS, (long) st->timeout);
        else
                curl_easy_setopt (st->curl, CURLOPT_TIMEOUT_MS,
                                CDTIME_T_TO_MS(plugin_get_interval()));
+#endif
 
        return (0);
 } /* }}} int init_host */
index 501f294f7319960828a81909d6872f0146c69388..11175af5e6104afa7b39291fd77fd45441a0cb64 100644 (file)
@@ -590,11 +590,13 @@ static int ascent_init (void) /* {{{ */
   if (cacert != NULL)
     curl_easy_setopt (curl, CURLOPT_CAINFO, cacert);
 
+#ifdef HAVE_CURLOPT_TIMEOUT_MS
   if (timeout != NULL)
     curl_easy_setopt (curl, CURLOPT_TIMEOUT_MS, atol(timeout));
   else
     curl_easy_setopt (curl, CURLOPT_TIMEOUT_MS,
        CDTIME_T_TO_MS(plugin_get_interval()));
+#endif
 
   return (0);
 } /* }}} int ascent_init */
index 1108a3a6cba3a50ed75d60bb775c0d0d798fe923..ec84df46efcf8db39133090d3fa0e34df513250c 100644 (file)
@@ -1757,8 +1757,10 @@ static int bind_init (void) /* {{{ */
   curl_easy_setopt (curl, CURLOPT_URL, (url != NULL) ? url : BIND_DEFAULT_URL);
   curl_easy_setopt (curl, CURLOPT_FOLLOWLOCATION, 1L);
   curl_easy_setopt (curl, CURLOPT_MAXREDIRS, 50L);
+#ifdef HAVE_CURLOPT_TIMEOUT_MS
   curl_easy_setopt (curl, CURLOPT_TIMEOUT_MS, (timeout >= 0) ?
       (long) timeout : CDTIME_T_TO_MS(plugin_get_interval()));
+#endif
 
 
   return (0);
index 1bbeddc7a6eb87e664efe45e8b65f1350adc47a6..11da3858237f6cacb9479cbed58853dca1073b18 100644 (file)
@@ -411,11 +411,13 @@ 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 */
index 5128c87410ea3b0d4a5ec781810cd6d4b699ed96..3a5a3ab87d7bd0a8320e88e5de5c4d08947d6222 100644 (file)
@@ -651,6 +651,7 @@ static int cj_init_curl (cj_t *db) /* {{{ */
   if (db->post_body != NULL)
     curl_easy_setopt (db->curl, CURLOPT_POSTFIELDS, db->post_body);
 
+#ifdef HAVE_CURLOPT_TIMEOUT_MS
   if (db->timeout >= 0)
     curl_easy_setopt (db->curl, CURLOPT_TIMEOUT_MS, (long) db->timeout);
   else if (db->interval > 0)
@@ -659,6 +660,7 @@ static int cj_init_curl (cj_t *db) /* {{{ */
   else
     curl_easy_setopt (db->curl, CURLOPT_TIMEOUT_MS,
         CDTIME_T_TO_MS(plugin_get_interval()));
+#endif
 
   return (0);
 } /* }}} int cj_init_curl */
index 32a48c511afcf6e9c636117a0955cf96b882d816..9049d9901f0733aec8cbd284b1335337f3c2ea5d 100644 (file)
@@ -885,11 +885,13 @@ static int cx_init_curl (cx_t *db) /* {{{ */
   if (db->post_body != NULL)
     curl_easy_setopt (db->curl, CURLOPT_POSTFIELDS, db->post_body);
 
+#ifdef HAVE_CURLOPT_TIMEOUT_MS
   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()));
+#endif
 
   return (0);
 } /* }}} int cx_init_curl */
index 1c537a85e46e7ac80e1502f3647a9f29fa6bdd64..4e4ce3bbc6115572873668a76507f80ccd82b316 100644 (file)
@@ -181,6 +181,7 @@ static int init (void)
     curl_easy_setopt (curl, CURLOPT_CAINFO, cacert);
   }
 
+#ifdef HAVE_CURLOPT_TIMEOUT_MS
   if (timeout != NULL)
   {
     curl_easy_setopt (curl, CURLOPT_TIMEOUT_MS, atol(timeout));
@@ -190,6 +191,7 @@ static int init (void)
     curl_easy_setopt (curl, CURLOPT_TIMEOUT_MS,
        CDTIME_T_TO_MS(plugin_get_interval()));
   }
+#endif
 
   return (0);
 } /* void init */
index 3b594be497ae371ac53e66098dfb3a6115d646dc..ed596bbf56b9e9ee88becd425126951a4591fb91 100644 (file)
@@ -132,8 +132,10 @@ static int wh_callback_init (wh_callback_t *cb) /* {{{ */
                                   (long) cb->low_speed_time);
         }
 
+#ifdef HAVE_CURLOPT_TIMEOUT_MS
         if (cb->timeout > 0)
                 curl_easy_setopt (cb->curl, CURLOPT_TIMEOUT_MS, (long) cb->timeout);
+#endif
 
         curl_easy_setopt (cb->curl, CURLOPT_NOSIGNAL, 1L);
         curl_easy_setopt (cb->curl, CURLOPT_USERAGENT, COLLECTD_USERAGENT);