diff --git a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs index 09c1652..fb0d281 100644 --- a/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs +++ b/src/Elasticsearch.Net.Aws/Elasticsearch.Net.Aws/AwsHttpConnection.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Net.Http; @@ -12,6 +12,8 @@ public class AwsHttpConnection : HttpConnection private readonly ICredentialsProvider _credentialsProvider; private readonly string _region; + public bool KeepAlive { get; set; } + /// /// Initializes a new instance of the AwsHttpConnection class with the specified AccessKey, SecretKey and Token. /// @@ -19,6 +21,7 @@ public class AwsHttpConnection : HttpConnection [Obsolete("Use AwsHttpConnection(string region, ICredentialsProvider credentialsProvider)")] public AwsHttpConnection(AwsSettings awsSettings) { + KeepAlive = false; if (awsSettings == null) throw new ArgumentNullException(nameof(awsSettings)); if (string.IsNullOrWhiteSpace(awsSettings.Region)) throw new ArgumentException("awsSettings.Region is invalid.", nameof(awsSettings)); _region = awsSettings.Region.ToLowerInvariant(); @@ -41,7 +44,6 @@ public AwsHttpConnection(string region) { } - /// /// Initializes a new instance of the AwsHttpConnection class with credentials from the Instance Profile service /// @@ -60,6 +62,8 @@ public AwsHttpConnection(string region, ICredentialsProvider credentialsProvider protected override System.Net.HttpWebRequest CreateHttpWebRequest(RequestData requestData) { var request = base.CreateHttpWebRequest(requestData); + request.Headers.Remove("Connection"); + request.Headers.Add("Connection", KeepAlive ? "Keep-Alive" : "close"); SignRequest(new HttpWebRequestAdapter(request), requestData); return request; } @@ -67,6 +71,8 @@ protected override System.Net.HttpWebRequest CreateHttpWebRequest(RequestData re protected override HttpRequestMessage CreateHttpRequestMessage(RequestData requestData) { var request = base.CreateHttpRequestMessage(requestData); + request.Headers.Remove("Connection"); + request.Headers.Add("Connection", KeepAlive ? "Keep-Alive" : "close"); SignRequest(new HttpRequestMessageAdapter(request), requestData); return request; } @@ -95,3 +101,4 @@ private void SignRequest(IRequest request, RequestData requestData) } } } +