From: loginator17 Date: Tue, 30 Sep 2014 14:45:25 +0000 (+0100) Subject: Update write_http.c X-Git-Tag: collectd-5.5.0~57^2~4^2~8 X-Git-Url: https://git.verplant.org/?a=commitdiff_plain;h=9552451c88ea3e482783f2a328bec457373fb3e0;p=collectd.git Update write_http.c Adding abort on stuck connection --- diff --git a/src/write_http.c b/src/write_http.c index d97bc9b5..80f42ab5 100644 --- a/src/write_http.c +++ b/src/write_http.c @@ -58,6 +58,8 @@ struct wh_callback_s char *clientkeypass; long sslversion; _Bool store_rates; + int abort_on_slow; + time_t interval; #define WH_FORMAT_COMMAND 0 #define WH_FORMAT_JSON 1 @@ -120,6 +122,12 @@ static int wh_callback_init (wh_callback_t *cb) /* {{{ */ return (-1); } + if(cb->abort_on_slow && cb->interval > 0) + { + curl_easy_setopt(cb->curl, CURLOPT_LOW_SPEED_LIMIT, 100); + curl_easy_setopt(cb->curl, CURLOPT_LOW_SPEED_TIME, cb->interval); + } + curl_easy_setopt (cb->curl, CURLOPT_NOSIGNAL, 1L); curl_easy_setopt (cb->curl, CURLOPT_USERAGENT, COLLECTD_USERAGENT); @@ -347,6 +355,8 @@ static int wh_write_command (const data_set_t *ds, const value_list_t *vl, /* {{ return (-1); } + cb->interval = CDTIME_T_TO_TIME_T(vl->interval); + pthread_mutex_lock (&cb->send_lock); if (cb->curl == NULL) @@ -394,6 +404,8 @@ static int wh_write_json (const data_set_t *ds, const value_list_t *vl, /* {{{ * wh_callback_t *cb) { int status; + + cb->interval = CDTIME_T_TO_TIME_T(vl->interval); pthread_mutex_lock (&cb->send_lock); @@ -572,6 +584,8 @@ static int wh_config_url (oconfig_item_t *ci) /* {{{ */ cf_util_get_boolean (child, &cb->store_rates); else if (strcasecmp ("BufferSize", child->key) == 0) cf_util_get_int (child, &buffer_size); + else if (strcasecmp ("LowSpeedLimit", child->key) == 0) + config_set_boolean (&cb->abort_on_slow, child); else { ERROR ("write_http plugin: Invalid configuration " @@ -579,6 +593,11 @@ static int wh_config_url (oconfig_item_t *ci) /* {{{ */ } } + if(cb->abort_on_slow) + { + cb->interval = CDTIME_T_TO_TIME_T(cf_get_default_interval ()); + } + /* Determine send_buffer_size. */ cb->send_buffer_size = WRITE_HTTP_DEFAULT_BUFFER_SIZE; if (buffer_size >= 1024)