Skip to content

Commit 64204a5

Browse files
authored
Make SocketsHttpHandler's content encoding comparison case-insensitive (#98475)
1 parent bccbf2e commit 64204a5

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

src/libraries/Common/tests/System/Net/Http/HttpClientHandlerTest.Decompression.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public abstract class HttpClientHandler_Decompression_Test : HttpClientHandlerTe
2828
public HttpClientHandler_Decompression_Test(ITestOutputHelper output) : base(output) { }
2929

3030
public static IEnumerable<object[]> DecompressedResponse_MethodSpecified_DecompressedContentReturned_MemberData() =>
31-
from compressionName in new[] { "gzip", "zlib", "deflate", "br" }
31+
from compressionName in new[] { "gzip", "GZIP", "zlib", "ZLIB", "deflate", "DEFLATE", "br", "BR" }
3232
from all in new[] { false, true }
3333
from copyTo in new[] { false, true }
3434
from contentLength in new[] { 0, 1, 12345 }
@@ -40,7 +40,7 @@ public static IEnumerable<object[]> DecompressedResponse_MethodSpecified_Decompr
4040
public async Task DecompressedResponse_MethodSpecified_DecompressedContentReturned(string compressionName, bool all, bool useCopyTo, int contentLength)
4141
{
4242
if (IsWinHttpHandler &&
43-
(compressionName == "br" || compressionName == "zlib"))
43+
(compressionName is "br" or "BR" or "zlib" or "ZLIB"))
4444
{
4545
// brotli and zlib not supported on WinHttpHandler
4646
return;
@@ -52,24 +52,28 @@ public async Task DecompressedResponse_MethodSpecified_DecompressedContentReturn
5252
switch (compressionName)
5353
{
5454
case "gzip":
55+
case "GZIP":
5556
compress = s => new GZipStream(s, CompressionLevel.Optimal, leaveOpen: true);
5657
methods = all ? DecompressionMethods.GZip : _all;
5758
break;
5859

5960
#if !NETFRAMEWORK
6061
case "br":
62+
case "BR":
6163
compress = s => new BrotliStream(s, CompressionLevel.Optimal, leaveOpen: true);
6264
methods = all ? DecompressionMethods.Brotli : _all;
6365
break;
6466

6567
case "zlib":
68+
case "ZLIB":
6669
compress = s => new ZLibStream(s, CompressionLevel.Optimal, leaveOpen: true);
6770
methods = all ? DecompressionMethods.Deflate : _all;
6871
encodingName = "deflate";
6972
break;
7073
#endif
7174

7275
case "deflate":
76+
case "DEFLATE":
7377
compress = s => new DeflateStream(s, CompressionLevel.Optimal, leaveOpen: true);
7478
methods = all ? DecompressionMethods.Deflate : _all;
7579
break;

src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/DecompressionHandler.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,15 +78,15 @@ internal override async ValueTask<HttpResponseMessage> SendAsync(HttpRequestMess
7878
last = encoding;
7979
}
8080

81-
if (GZipEnabled && last == Gzip)
81+
if (GZipEnabled && string.Equals(last, Gzip, StringComparison.OrdinalIgnoreCase))
8282
{
8383
response.Content = new GZipDecompressedContent(response.Content);
8484
}
85-
else if (DeflateEnabled && last == Deflate)
85+
else if (DeflateEnabled && string.Equals(last, Deflate, StringComparison.OrdinalIgnoreCase))
8686
{
8787
response.Content = new DeflateDecompressedContent(response.Content);
8888
}
89-
else if (BrotliEnabled && last == Brotli)
89+
else if (BrotliEnabled && string.Equals(last, Brotli, StringComparison.OrdinalIgnoreCase))
9090
{
9191
response.Content = new BrotliDecompressedContent(response.Content);
9292
}

0 commit comments

Comments
 (0)