add correct value when cloning http headers (#35498)
authorTomas Weinfurt <tweinfurt@yahoo.com>
Mon, 27 Apr 2020 11:31:56 +0000 (04:31 -0700)
committerGitHub <noreply@github.com>
Mon, 27 Apr 2020 11:31:56 +0000 (13:31 +0200)
* add correct value when cloning http headers

* Address PR feedback

Co-authored-by: Tomas Weinfurt <furt@Shining.local>
Co-authored-by: Stephen Toub <stoub@microsoft.com>
src/libraries/System.Net.Http/src/System/Net/Http/Headers/HttpHeaders.cs
src/libraries/System.Net.Http/tests/FunctionalTests/HttpClientHandlerTest.Headers.cs

index 7ba6b35..ac0849f 100644 (file)
@@ -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;
index b66becd..48cc1ce 100644 (file)
@@ -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")]