@@ -1542,6 +1542,25 @@ fn streaming_body() {
1542
1542
rt. block_on ( fut. join ( rx) ) . unwrap ( ) ;
1543
1543
}
1544
1544
1545
+ #[ test]
1546
+ fn http1_response_with_http2_version ( ) {
1547
+ let server = serve ( ) ;
1548
+ let addr_str = format ! ( "http://{}" , server. addr( ) ) ;
1549
+
1550
+ let mut rt = Runtime :: new ( ) . expect ( "runtime new" ) ;
1551
+
1552
+ server
1553
+ . reply ( )
1554
+ . version ( hyper:: Version :: HTTP_2 ) ;
1555
+
1556
+ rt. block_on ( hyper:: rt:: lazy ( move || {
1557
+ let client = Client :: new ( ) ;
1558
+ let uri = addr_str. parse ( ) . expect ( "server addr should parse" ) ;
1559
+
1560
+ client. get ( uri)
1561
+ } ) ) . unwrap ( ) ;
1562
+ }
1563
+
1545
1564
#[ test]
1546
1565
fn try_h2 ( ) {
1547
1566
let server = serve ( ) ;
@@ -1641,6 +1660,11 @@ impl<'a> ReplyBuilder<'a> {
1641
1660
self
1642
1661
}
1643
1662
1663
+ fn version ( self , version : hyper:: Version ) -> Self {
1664
+ self . tx . send ( Reply :: Version ( version) ) . unwrap ( ) ;
1665
+ self
1666
+ }
1667
+
1644
1668
fn header < V : AsRef < str > > ( self , name : & str , value : V ) -> Self {
1645
1669
let name = HeaderName :: from_bytes ( name. as_bytes ( ) ) . expect ( "header name" ) ;
1646
1670
let value = HeaderValue :: from_str ( value. as_ref ( ) ) . expect ( "header value" ) ;
@@ -1681,6 +1705,7 @@ struct TestService {
1681
1705
#[ derive( Debug ) ]
1682
1706
enum Reply {
1683
1707
Status ( hyper:: StatusCode ) ,
1708
+ Version ( hyper:: Version ) ,
1684
1709
Header ( HeaderName , HeaderValue ) ,
1685
1710
Body ( hyper:: Body ) ,
1686
1711
End ,
@@ -1718,6 +1743,9 @@ impl TestService {
1718
1743
Reply :: Status ( s) => {
1719
1744
* res. status_mut ( ) = s;
1720
1745
} ,
1746
+ Reply :: Version ( v) => {
1747
+ * res. version_mut ( ) = v;
1748
+ } ,
1721
1749
Reply :: Header ( name, value) => {
1722
1750
res. headers_mut ( ) . insert ( name, value) ;
1723
1751
} ,
0 commit comments