Skip to content

Commit 1d4dd6b

Browse files
Tratcherdougbu
authored andcommitted
React to new HttpClient header size check #45811 (#45880)
1 parent 317a8ca commit 1d4dd6b

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/Servers/Kestrel/test/Interop.FunctionalTests/HttpClientHttp2InteropTests.cs

+7-7
Original file line numberDiff line numberDiff line change
@@ -1345,7 +1345,6 @@ public async Task Settings_MaxFrameSize_Larger_Server(string scheme)
13451345

13461346
[Theory]
13471347
[MemberData(nameof(SupportedSchemes))]
1348-
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/45811")]
13491348
public async Task Settings_MaxHeaderListSize_Server(string scheme)
13501349
{
13511350
var oneKbString = new string('a', 1024);
@@ -1354,26 +1353,27 @@ public async Task Settings_MaxHeaderListSize_Server(string scheme)
13541353
{
13551354
ConfigureKestrel(webHostBuilder, scheme);
13561355
webHostBuilder.ConfigureServices(AddTestLogging)
1357-
.Configure(app => app.Run(context => throw new NotImplementedException()));
1356+
.Configure(app => app.Run(context => context.Response.WriteAsync("Hello World")));
13581357
});
13591358
using var host = await hostBuilder.StartAsync().DefaultTimeout();
13601359

13611360
var url = host.MakeUrl(scheme);
13621361

13631362
using var client = CreateClient();
1364-
// There's no point in waiting for the settings to sync, the client doesn't check the header list size setting.
1365-
// https://github.com/dotnet/runtime/blob/48a78bfa13e9c710851690621fc2c0fe1637802c/src/libraries/System.Net.Http/src/System/Net/Http/SocketsHttpHandler/Http2Connection.cs#L467-L494
1363+
// Send an initial request to ensure the settings get synced before the real test.
1364+
var responseBody = await client.GetStringAsync(url).DefaultTimeout();
1365+
Assert.Equal("Hello World", responseBody);
13661366

13671367
var request = CreateRequestMessage(HttpMethod.Get, url, content: null);
13681368
// The default size limit is 32kb.
13691369
for (var i = 0; i < 33; i++)
13701370
{
13711371
request.Headers.Add("header" + i, oneKbString + i);
13721372
}
1373-
var response = await client.SendAsync(request).DefaultTimeout();
1374-
await host.StopAsync().DefaultTimeout();
1373+
var ex = await Assert.ThrowsAsync<HttpRequestException>(() => client.SendAsync(request).DefaultTimeout());
1374+
Assert.Equal("The HTTP request headers length exceeded the server limit of 32768 bytes.", ex.Message);
13751375

1376-
Assert.Equal(HttpStatusCode.RequestHeaderFieldsTooLarge, response.StatusCode);
1376+
await host.StopAsync().DefaultTimeout();
13771377
}
13781378

13791379
[Theory]

0 commit comments

Comments
 (0)