From 17d883c60219031b869aa79057f613a9678f162f Mon Sep 17 00:00:00 2001
From: Daniel Nelson <daniel.nelson@influxdb.com>
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 7dd04304..cd3d735d 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
 
-- 
GitLab