Skip to content

Commit 41bff69

Browse files
authored
Fixed a bug causing duplicate user-agent headers when using a shared HttpClient. (#2008)
* Added product version to the user-agent check when configuring HttpClient. * Created a unit test to handle duplicate user agent scenario.
1 parent 9ca6777 commit 41bff69

File tree

2 files changed

+16
-1
lines changed

2 files changed

+16
-1
lines changed

src/RestSharp/RestClient.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ public RestClient(
210210
static void ConfigureHttpClient(HttpClient httpClient, RestClientOptions options) {
211211
if (options.MaxTimeout > 0) httpClient.Timeout = TimeSpan.FromMilliseconds(options.MaxTimeout);
212212

213-
if (options.UserAgent != null && httpClient.DefaultRequestHeaders.UserAgent.All(x => x.Product?.Name != options.UserAgent)) {
213+
if (options.UserAgent != null && httpClient.DefaultRequestHeaders.UserAgent.All(x => $"{x.Product?.Name}/{x.Product?.Version}" != Options.UserAgent)) {
214214
httpClient.DefaultRequestHeaders.TryAddWithoutValidation(KnownHeaders.UserAgent, options.UserAgent);
215215
}
216216

test/RestSharp.Tests/RestClientTests.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,4 +116,19 @@ public void Should_use_new_httpClient_instance() {
116116

117117
client1.HttpClient.Should().NotBeSameAs(client2.HttpClient);
118118
}
119+
120+
[Fact]
121+
public void ConfigureHttpClient_does_not_duplicate_user_agent_for_same_client() {
122+
// arrange
123+
var httpClient = new HttpClient();
124+
var clientOptions = new RestClientOptions();
125+
126+
// act
127+
var restClient1 = new RestClient(httpClient, clientOptions);
128+
var restClient2 = new RestClient(httpClient, clientOptions);
129+
130+
// assert
131+
Assert.Contains(httpClient.DefaultRequestHeaders.UserAgent, agent => $"{agent.Product.Name}/{agent.Product.Version}" == clientOptions.UserAgent);
132+
Assert.Single(httpClient.DefaultRequestHeaders.UserAgent);
133+
}
119134
}

0 commit comments

Comments
 (0)