From 17d883c60219031b869aa79057f613a9678f162f Mon Sep 17 00:00:00 2001 From: Daniel Nelson Date: Wed, 10 May 2017 14:40:55 -0700 Subject: [PATCH] Ensure keep-alive is not used in http_response input. Using Keep-Alive would change the timing for already established connections. Previous to this commit, Keep-Alive worked only when using a response_string_match due to failure to close the request body. --- plugins/inputs/http_response/http_response.go | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/plugins/inputs/http_response/http_response.go b/plugins/inputs/http_response/http_response.go index 7dd043043..cd3d735d2 100644 --- a/plugins/inputs/http_response/http_response.go +++ b/plugins/inputs/http_response/http_response.go @@ -92,7 +92,8 @@ func (h *HTTPResponse) createHttpClient() (*http.Client, error) { } client := &http.Client{ Transport: &http.Transport{ - TLSClientConfig: tlsCfg, + DisableKeepAlives: true, + TLSClientConfig: tlsCfg, }, Timeout: h.ResponseTimeout.Duration, } @@ -140,6 +141,11 @@ func (h *HTTPResponse) httpGather() (map[string]interface{}, error) { return nil, err } } + defer func() { + io.Copy(ioutil.Discard, resp.Body) + resp.Body.Close() + }() + fields["response_time"] = time.Since(start).Seconds() fields["http_response_code"] = resp.StatusCode