From 6d1f7e01d3429054ec3dcb7c75b3450b9fe1429e Mon Sep 17 00:00:00 2001 From: Stephen Toub Date: Mon, 27 Apr 2020 16:35:42 -0400 Subject: add correct value when cloning http headers (#35498) (#35510) * add correct value when cloning http headers * Address PR feedback Co-authored-by: Tomas Weinfurt Co-authored-by: Stephen Toub Co-authored-by: Tomas Weinfurt Co-authored-by: Tomas Weinfurt --- .../src/System/Net/Http/Headers/HttpHeaders.cs | 2 +- .../HttpClientHandlerTest.Headers.cs | 27 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaders.cs b/src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaders.cs index 7ba6b353240..ac0849f5824 100644 --- a/src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaders.cs +++ b/src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaders.cs @@ -161,7 +161,7 @@ namespace System.Net.Http.Headers else { // The header store did not contain the header. Add the raw string. - _headerStore.Add(descriptor, _forceHeaderStoreItems ? new HeaderStoreItemInfo { RawValue = currentValue } : (object)value); + _headerStore.Add(descriptor, _forceHeaderStoreItems ? new HeaderStoreItemInfo { RawValue = value } : (object)value); } return true; diff --git a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.Headers.cs b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.Headers.cs index b66becd57b4..48cc1cee5f2 100644 --- a/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.Headers.cs +++ b/src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.Headers.cs @@ -45,6 +45,33 @@ namespace System.Net.Http.Functional.Tests }); } + [Fact] + public async Task SendAsync_DefaultHeaders_CorrectlyWritten() + { + const string Version = "2017-04-17"; + const string Blob = "BlockBlob"; + + await LoopbackServerFactory.CreateClientAndServerAsync(async uri => + { + using (HttpClient client = CreateHttpClient()) + { + client.DefaultRequestHeaders.TryAddWithoutValidation("x-ms-version", Version); + client.DefaultRequestHeaders.Add("x-ms-blob-type", Blob); + var message = new HttpRequestMessage(HttpMethod.Get, uri) { Version = UseVersion }; + (await client.SendAsync(message).ConfigureAwait(false)).Dispose(); + } + }, + async server => + { + HttpRequestData requestData = await server.HandleRequestAsync(HttpStatusCode.OK); + + string headerValue = requestData.GetSingleHeaderValue("x-ms-blob-type"); + Assert.Equal(Blob, headerValue); + headerValue = requestData.GetSingleHeaderValue("x-ms-version"); + Assert.Equal(Version, Version); + }); + } + [Theory] [InlineData("\u05D1\u05F1")] [InlineData("jp\u30A5")] -- cgit v1.2.3