[Theory]
[MemberData(nameof(AltSvcHeaderUpgradeVersions))]
- public async Task AltSvc_Header_Upgrade_Success(Version fromVersion)
+ public async Task AltSvc_Header_Upgrade_Success(Version fromVersion, bool overrideHost)
{
// The test makes a request to a HTTP/1 or HTTP/2 server first, which supplies an Alt-Svc header pointing to the second server.
using GenericLoopbackServer firstServer =
// The second request is expected to come in on this HTTP/3 server.
using Http3LoopbackServer secondServer = CreateHttp3LoopbackServer();
+
+ if (!overrideHost)
+ Assert.Equal(firstServer.Address.IdnHost, secondServer.Address.IdnHost);
using HttpClient client = CreateHttpClient(fromVersion);
Task<HttpResponseMessage> firstResponseTask = client.GetAsync(firstServer.Address);
Task serverTask = firstServer.AcceptConnectionSendResponseAndCloseAsync(additionalHeaders: new[]
{
- new HttpHeaderData("Alt-Svc", $"h3=\"{secondServer.Address.IdnHost}:{secondServer.Address.Port}\"")
+ new HttpHeaderData("Alt-Svc", $"h3=\"{(overrideHost ? secondServer.Address.IdnHost : null)}:{secondServer.Address.Port}\"")
});
await new[] { firstResponseTask, serverTask }.WhenAllOrAnyFailed(30_000);
await AltSvc_Upgrade_Success(firstServer, secondServer, client);
}
- public static TheoryData<Version> AltSvcHeaderUpgradeVersions =>
- new TheoryData<Version>
+ public static TheoryData<Version, bool> AltSvcHeaderUpgradeVersions =>
+ new TheoryData<Version, bool>
{
- { HttpVersion.Version11 },
- { HttpVersion.Version20 }
+ { HttpVersion.Version11, true },
+ { HttpVersion.Version11, false },
+ { HttpVersion.Version20, true },
+ { HttpVersion.Version20, false }
};
[Fact]