From: Marc Fournier Date: Tue, 24 Mar 2015 06:37:18 +0000 (+0100) Subject: Merge remote-tracking branch 'origin/pr/752' into wh_low_speed_limit X-Git-Tag: collectd-5.5.0~57^2~4 X-Git-Url: https://git.octo.it/?p=collectd.git;a=commitdiff_plain;h=5b1d67d04e490d48dd72dbb9f84d1a74bfb9dcc1 Merge remote-tracking branch 'origin/pr/752' into wh_low_speed_limit Conflicts: src/write_http.c Also slipped in a couple of conding-style consistentcy related changes. --- 5b1d67d04e490d48dd72dbb9f84d1a74bfb9dcc1 diff --cc src/collectd.conf.pod index bd781074,1a89be3d..a0d6f892 --- a/src/collectd.conf.pod +++ b/src/collectd.conf.pod @@@ -7138,6 -6849,22 +7138,22 @@@ are available on the server side. I, i.e. 2EGByte. Defaults to C<4096>. + =item B B + -If set to B, average transfer speed in bytes per second will be checked. -In case it is below B connection will be considered slow ++If set to B, average transfer speed in bytes per second will be checked. ++In case it is below B connection will be considered slow + and aborted. + + =item B I + -Sets bytes per second value for B to make a decission if ++Sets bytes per second value for B to make a decission if + connection is too slow. Default value is C<100>. + + =item B I + + If defined, provided positive integer value will be used to set maximum time + in seconds that you allow for transfer(http post) operation to take. + =back =head2 Plugin C diff --cc src/write_http.c index 8d3b85b3,a48cdf33..0e1bc734 --- a/src/write_http.c +++ b/src/write_http.c @@@ -58,7 -58,11 +59,11 @@@ struct wh_callback_ char *clientcert; char *clientkeypass; long sslversion; - _Bool store_rates; + _Bool store_rates; + _Bool abort_on_slow; + int low_limit_bytes; + time_t interval; + int post_timeout; #define WH_FORMAT_COMMAND 0 #define WH_FORMAT_JSON 1 @@@ -121,6 -125,16 +126,16 @@@ static int wh_callback_init (wh_callbac return (-1); } - if(cb->abort_on_slow && cb->interval > 0) ++ if (cb->abort_on_slow && cb->interval > 0) + { - curl_easy_setopt(cb->curl, CURLOPT_LOW_SPEED_LIMIT, (cb->low_limit_bytes?cb->low_limit_bytes:WH_DEFAULT_LOW_LIMIT_BYTES_PER_SEC)); - curl_easy_setopt(cb->curl, CURLOPT_LOW_SPEED_TIME, cb->interval); - } - if(cb->post_timeout >0) - { - curl_easy_setopt(cb->curl, CURLOPT_TIMEOUT, cb->post_timeout); ++ curl_easy_setopt (cb->curl, CURLOPT_LOW_SPEED_LIMIT, ++ (cb->low_limit_bytes ? cb->low_limit_bytes : WH_DEFAULT_LOW_LIMIT_BYTES_PER_SEC)); ++ curl_easy_setopt (cb->curl, CURLOPT_LOW_SPEED_TIME, cb->interval); + } + ++ if (cb->post_timeout > 0) ++ curl_easy_setopt (cb->curl, CURLOPT_TIMEOUT, cb->post_timeout); ++ curl_easy_setopt (cb->curl, CURLOPT_NOSIGNAL, 1L); curl_easy_setopt (cb->curl, CURLOPT_USERAGENT, COLLECTD_USERAGENT); @@@ -594,14 -605,16 +620,21 @@@ static int wh_config_node (oconfig_item } } - if(cb->abort_on_slow) - { - cb->interval = CDTIME_T_TO_TIME_T(plugin_get_interval()); - } - if(cb->post_timeout == 0) + if (cb->location == NULL) { - //setting default timeout to plugin interval. - cb->post_timeout = CDTIME_T_TO_TIME_T(plugin_get_interval()); + ERROR ("write_http plugin: no URL defined for instance '%s'", + cb->name); + wh_callback_free (cb); + return (-1); } ++ if (cb->abort_on_slow) ++ cb->interval = CDTIME_T_TO_TIME_T(plugin_get_interval()); ++ ++ if (cb->post_timeout == 0) ++ //setting default timeout to plugin interval. ++ cb->post_timeout = CDTIME_T_TO_TIME_T(plugin_get_interval()); ++ /* Determine send_buffer_size. */ cb->send_buffer_size = WRITE_HTTP_DEFAULT_BUFFER_SIZE; if (buffer_size >= 1024)