@@ -623,6 +623,37 @@ void ConfigureListenOptions(ListenOptions listenOptions)
623
623
stream . NegotiatedApplicationProtocol ) ;
624
624
}
625
625
626
+ [ ConditionalFact ]
627
+ [ OSSkipCondition ( OperatingSystems . MacOSX | OperatingSystems . Linux , SkipReason = "Downgrade logic only applies on Windows" ) ]
628
+ [ MinimumOSVersion ( OperatingSystems . Windows , WindowsVersions . Win7 ) ]
629
+ [ MaximumOSVersion ( OperatingSystems . Windows , WindowsVersions . Win81 ) ]
630
+ public void Http1AndHttp2DowngradeToHttp1ForHttpsOnIncompatibleWindowsVersions ( )
631
+ {
632
+ var httpConnectionAdapterOptions = new HttpsConnectionAdapterOptions
633
+ {
634
+ ServerCertificate = _x509Certificate2 ,
635
+ HttpProtocols = HttpProtocols . Http1AndHttp2
636
+ } ;
637
+ new HttpsConnectionMiddleware ( context => Task . CompletedTask , httpConnectionAdapterOptions ) ;
638
+
639
+ Assert . Equal ( HttpProtocols . Http1 , httpConnectionAdapterOptions . HttpProtocols ) ;
640
+ }
641
+
642
+ [ ConditionalFact ]
643
+ [ OSSkipCondition ( OperatingSystems . MacOSX | OperatingSystems . Linux , SkipReason = "Downgrade logic only applies on Windows" ) ]
644
+ [ MinimumOSVersion ( OperatingSystems . Windows , WindowsVersions . Win10 ) ]
645
+ public void Http1AndHttp2DoesNotDowngradeOnCompatibleWindowsVersions ( )
646
+ {
647
+ var httpConnectionAdapterOptions = new HttpsConnectionAdapterOptions
648
+ {
649
+ ServerCertificate = _x509Certificate2 ,
650
+ HttpProtocols = HttpProtocols . Http1AndHttp2
651
+ } ;
652
+ new HttpsConnectionMiddleware ( context => Task . CompletedTask , httpConnectionAdapterOptions ) ;
653
+
654
+ Assert . Equal ( HttpProtocols . Http1AndHttp2 , httpConnectionAdapterOptions . HttpProtocols ) ;
655
+ }
656
+
626
657
private static async Task App ( HttpContext httpContext )
627
658
{
628
659
var request = httpContext . Request ;
0 commit comments