@@ -1627,6 +1627,40 @@ async fn rogue_server_reused_headers() {
16271627 join ( srv, h2) . await ;
16281628}
16291629
1630+ #[ tokio:: test]
1631+ async fn client_builder_header_table_size ( ) {
1632+ h2_support:: trace_init!( ) ;
1633+ let ( io, mut srv) = mock:: new ( ) ;
1634+ let mut settings = frame:: Settings :: default ( ) ;
1635+
1636+ settings. set_header_table_size ( Some ( 10000 ) ) ;
1637+
1638+ let srv = async move {
1639+ let recv_settings = srv. assert_client_handshake ( ) . await ;
1640+ assert_frame_eq ( recv_settings, settings) ;
1641+
1642+ srv. recv_frame (
1643+ frames:: headers ( 1 )
1644+ . request ( "GET" , "https://example.com/" )
1645+ . eos ( ) ,
1646+ )
1647+ . await ;
1648+ srv. send_frame ( frames:: headers ( 1 ) . response ( 200 ) . eos ( ) ) . await ;
1649+ } ;
1650+
1651+ let mut builder = client:: Builder :: new ( ) ;
1652+ builder. header_table_size ( 10000 ) ;
1653+
1654+ let h2 = async move {
1655+ let ( mut client, mut h2) = builder. handshake :: < _ , Bytes > ( io) . await . unwrap ( ) ;
1656+ let request = Request :: get ( "https://example.com/" ) . body ( ( ) ) . unwrap ( ) ;
1657+ let ( response, _) = client. send_request ( request, true ) . unwrap ( ) ;
1658+ h2. drive ( response) . await . unwrap ( ) ;
1659+ } ;
1660+
1661+ join ( srv, h2) . await ;
1662+ }
1663+
16301664const SETTINGS : & [ u8 ] = & [ 0 , 0 , 0 , 4 , 0 , 0 , 0 , 0 , 0 ] ;
16311665const SETTINGS_ACK : & [ u8 ] = & [ 0 , 0 , 0 , 4 , 1 , 0 , 0 , 0 , 0 ] ;
16321666
0 commit comments