Skip to content

Commit 388cc4f

Browse files
codehcodebrain
authored andcommitted
Set HttpClientHandler.UseProxy=false on DisableAutomaticProxyDetection==true (#2911)
1 parent e4ad2b1 commit 388cc4f

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

src/Elasticsearch.Net/Connection/HttpConnection-CoreFx.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,10 @@ protected virtual HttpClientHandler CreateHttpClientHandler(RequestData requestD
186186
}
187187
handler.Proxy = proxy;
188188
}
189-
190-
if (requestData.DisableAutomaticProxyDetection)
191-
handler.Proxy = null;
189+
else if (requestData.DisableAutomaticProxyDetection)
190+
{
191+
handler.UseProxy = false;
192+
}
192193

193194
var callback = requestData?.ConnectionSettings?.ServerCertificateValidationCallback;
194195
if (callback != null && handler.ServerCertificateCustomValidationCallback == null)

src/Tests/ClientConcepts/Connection/HttpConnectionTests.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@
22
using System;
33
using System.Collections.Generic;
44
using System.Linq;
5+
using System.Net.Http;
56
using System.Threading;
67
using System.Threading.Tasks;
78
using Elasticsearch.Net;
89
using FluentAssertions;
910
using Nest;
1011
using Tests.Framework;
12+
using HttpMethod = Elasticsearch.Net.HttpMethod;
1113

1214
namespace Tests.ClientConcepts.Connection
1315
{
@@ -19,6 +21,8 @@ public class TestableHttpConnection : HttpConnection
1921

2022
public int CallCount { get; private set; }
2123

24+
public HttpClientHandler LastUsedHttpClientHandler { get; private set; }
25+
2226
public override ElasticsearchResponse<TReturn> Request<TReturn>(RequestData requestData)
2327
{
2428
CallCount++;
@@ -30,6 +34,12 @@ public override Task<ElasticsearchResponse<TReturn>> RequestAsync<TReturn>(Reque
3034
CallCount++;
3135
return base.RequestAsync<TReturn>(requestData, cancellationToken);
3236
}
37+
38+
protected override HttpClientHandler CreateHttpClientHandler(RequestData requestData)
39+
{
40+
LastUsedHttpClientHandler = base.CreateHttpClientHandler(requestData);
41+
return LastUsedHttpClientHandler;
42+
}
3343
}
3444

3545
[U]
@@ -112,6 +122,36 @@ private static RequestData CreateRequestData(
112122
};
113123
return requestData;
114124
}
125+
126+
/// <summary>
127+
/// Setting HttpClientHandler.Proxy = null don't disable HttpClient automatic proxy detection.
128+
/// It is disabled by setting Proxy to non-null value or by setting UseProxy = false.
129+
/// </summary>
130+
[U]
131+
public async Task HttpClientUseProxyShouldBeFalseWhenDisabledAutoProxyDetection()
132+
{
133+
var connection = new TestableHttpConnection();
134+
var requestData = CreateRequestData(disableAutomaticProxyDetection: true);
135+
136+
connection.Request<string>(requestData);
137+
connection.LastUsedHttpClientHandler.UseProxy.Should().BeFalse();
138+
139+
await connection.RequestAsync<string>(requestData, CancellationToken.None).ConfigureAwait(false);
140+
connection.LastUsedHttpClientHandler.UseProxy.Should().BeFalse();
141+
}
142+
143+
[U]
144+
public async Task HttpClientUseProxyShouldBeTrueWhenEnabledAutoProxyDetection()
145+
{
146+
var connection = new TestableHttpConnection();
147+
var requestData = CreateRequestData();
148+
149+
connection.Request<string>(requestData);
150+
connection.LastUsedHttpClientHandler.UseProxy.Should().BeTrue();
151+
152+
await connection.RequestAsync<string>(requestData, CancellationToken.None).ConfigureAwait(false);
153+
connection.LastUsedHttpClientHandler.UseProxy.Should().BeTrue();
154+
}
115155
}
116156
}
117157
#endif

0 commit comments

Comments
 (0)