Merge remote-tracking branch 'origin/pr/752' into wh_low_speed_limit
authorMarc Fournier <marc.fournier@camptocamp.com>
Tue, 24 Mar 2015 06:37:18 +0000 (07:37 +0100)
committerMarc Fournier <marc.fournier@camptocamp.com>
Tue, 24 Mar 2015 06:37:18 +0000 (07:37 +0100)
Conflicts:
src/write_http.c

Also slipped in a couple of conding-style consistentcy related changes.

1  2 
src/collectd.conf.pod
src/write_http.c

@@@ -7138,6 -6849,22 +7138,22 @@@ are available on the server side. I<Byt
  exceed the size of an C<int>, i.e. 2E<nbsp>GByte.
  Defaults to C<4096>.
  
 -If set to B<true>, average transfer speed in bytes per second will be checked. 
 -In case it is below B<LowLimitBytesPerSec> connection will be considered slow 
+ =item B<LowSpeedLimit> B<true|false>
 -Sets bytes per second value for B<LowSpeedLimit> to make a decission if 
++If set to B<true>, average transfer speed in bytes per second will be checked.
++In case it is below B<LowLimitBytesPerSec> connection will be considered slow
+ and aborted.
+ =item B<LowLimitBytesPerSec> I<Bytes>
++Sets bytes per second value for B<LowSpeedLimit> to make a decission if
+ connection is too slow. Default value is C<100>.
+ =item B<PostTimeoutSec> I<Seconds>
+ 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<write_kafka>
@@@ -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)