Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ public void AddRestClient(

services
.AddHttpClient(name)
.ConfigureHttpClient(client => RestClient.ConfigureHttpClient(client, options))
.ConfigurePrimaryHttpMessageHandler(() => {
var handler = new HttpClientHandler();
RestClient.ConfigureHttpMessageHandler(handler, options);
Expand Down
16 changes: 9 additions & 7 deletions src/RestSharp/RestClient.Async.cs
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,11 @@ async Task<HttpResponse> ExecuteRequestAsync(RestRequest request, CancellationTo
.AddCookieHeaders(url, Options.CookieContainer);

var message = new HttpRequestMessage(httpMethod, url);
message.Content = initialContent.BuildContent();
message.Headers.Host = Options.BaseHost;
message.Headers.CacheControl = request.CachePolicy ?? Options.CachePolicy;
message.Version = request.Version;
message.Content = initialContent.BuildContent();
message.Headers.Host = Options.BaseHost;
message.Headers.CacheControl = request.CachePolicy ?? Options.CachePolicy;
message.Headers.ExpectContinue = Options.Expect100Continue;
message.Version = request.Version;
message.AddHeaders(headers);

#pragma warning disable CS0618 // Type or member is obsolete
Expand Down Expand Up @@ -272,9 +273,10 @@ HttpRequestMessage CreateRedirectMessage(
bool verbChangedToGet
) {
var redirectMessage = new HttpRequestMessage(httpMethod, url);
redirectMessage.Version = request.Version;
redirectMessage.Headers.Host = Options.BaseHost;
redirectMessage.Headers.CacheControl = request.CachePolicy ?? Options.CachePolicy;
redirectMessage.Version = request.Version;
redirectMessage.Headers.Host = Options.BaseHost;
redirectMessage.Headers.CacheControl = request.CachePolicy ?? Options.CachePolicy;
redirectMessage.Headers.ExpectContinue = Options.Expect100Continue;

if (!verbChangedToGet && redirectOptions.ForwardBody) {
var redirectContent = new RequestContent(this, request);
Expand Down
6 changes: 0 additions & 6 deletions src/RestSharp/RestClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,6 @@ HttpClient GetClient() {
ConfigureHttpMessageHandler(handler, options);
var finalHandler = options.ConfigureMessageHandler?.Invoke(handler) ?? handler;
var httpClient = new HttpClient(finalHandler);
ConfigureHttpClient(httpClient, options);

// We will use Options.Timeout in ExecuteAsInternalAsync method
httpClient.Timeout = Timeout.InfiniteTimeSpan;
Expand Down Expand Up @@ -188,7 +187,6 @@ public RestClient(
DefaultParameters = new(Options);

if (options != null) {
ConfigureHttpClient(httpClient, options);
ConfigureDefaultParameters(options);
}
}
Expand Down Expand Up @@ -224,10 +222,6 @@ public RestClient(
)
: this(new HttpClient(handler, disposeHandler), true, configureRestClient, configureSerialization) { }

internal static void ConfigureHttpClient(HttpClient httpClient, RestClientOptions options) {
if (options.Expect100Continue != null) httpClient.DefaultRequestHeaders.ExpectContinue = options.Expect100Continue;
}

// ReSharper disable once CognitiveComplexity
internal static void ConfigureHttpMessageHandler(HttpClientHandler handler, RestClientOptions options) {
#if NET
Expand Down
25 changes: 25 additions & 0 deletions test/RestSharp.Tests/RestClientTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -123,4 +123,29 @@ public void ConfigureDefaultParameters_sets_user_agent_given_httpClient_instance

Assert.Empty(httpClient.DefaultRequestHeaders.UserAgent);
}

[Fact]
public void Should_not_set_expect_continue_on_shared_http_client_default_headers() {
// arrange
var httpClient = new HttpClient();
var options = new RestClientOptions { Expect100Continue = true };

// act
using var restClient = new RestClient(httpClient, options);

// assert — the shared HttpClient's DefaultRequestHeaders must not be modified
httpClient.DefaultRequestHeaders.ExpectContinue.Should().BeNull();
}

[Fact]
public void Should_not_set_expect_continue_on_new_http_client_default_headers() {
// arrange
var options = new RestClientOptions { Expect100Continue = false };

// act
using var restClient = new RestClient(options);

// assert
restClient.HttpClient.DefaultRequestHeaders.ExpectContinue.Should().BeNull();
}
}
Loading