@@ -50,6 +50,8 @@ pub struct HttpServer {
5050 worker_loop : WorkerLoop ,
5151 drop_orphaned_messages_loop : WorkerLoop ,
5252 cancel_token : CancellationToken ,
53+ max_message_size : usize ,
54+ max_frame_size : usize ,
5355}
5456
5557crate :: di_service!( HttpServer , [ ] ) ;
@@ -81,6 +83,8 @@ impl HttpServer {
8183 check_orphaned_messages_interval : Duration ,
8284 drop_processing_messages_after : Duration ,
8385 drop_complete_messages_after : Duration ,
86+ max_message_size : usize ,
87+ max_frame_size : usize ,
8488 ) -> Arc < Self > {
8589 Arc :: new ( Self {
8690 bind_address,
@@ -89,6 +93,8 @@ impl HttpServer {
8993 check_orphaned_messages_interval,
9094 drop_processing_messages_after,
9195 drop_complete_messages_after,
96+ max_message_size,
97+ max_frame_size,
9298 worker_loop : WorkerLoop :: new ( "HttpServer message processing" ) ,
9399 drop_orphaned_messages_loop : WorkerLoop :: new ( "HttpServer drop orphaned messages" ) ,
94100 cancel_token : CancellationToken :: new ( ) ,
@@ -121,14 +127,16 @@ impl HttpServer {
121127 let context_filter = tx_to_move_filter. and ( auth_filter. clone ( ) ) ;
122128
123129 let context_filter_to_move = context_filter. clone ( ) ;
130+ let max_frame_size = self . max_frame_size . clone ( ) ;
131+ let max_message_size = self . max_message_size . clone ( ) ;
124132
125133 let query_route = warp:: path!( "ws" )
126134 . and ( context_filter_to_move)
127135 . and ( warp:: ws:: ws ( ) )
128- . and_then ( |tx : mpsc:: Sender < ( mpsc:: Sender < Arc < HttpMessage > > , SqlQueryContext , HttpMessage ) > , sql_query_context : SqlQueryContext , ws : Ws | async move {
136+ . and_then ( move |tx : mpsc:: Sender < ( mpsc:: Sender < Arc < HttpMessage > > , SqlQueryContext , HttpMessage ) > , sql_query_context : SqlQueryContext , ws : Ws | async move {
129137 let tx_to_move = tx. clone ( ) ;
130138 let sql_query_context = sql_query_context. clone ( ) ;
131- Result :: < _ , Rejection > :: Ok ( ws. on_upgrade ( async move |mut web_socket| {
139+ Result :: < _ , Rejection > :: Ok ( ws. max_frame_size ( max_frame_size ) . max_message_size ( max_message_size ) . on_upgrade ( async move |mut web_socket| {
132140 let ( response_tx, mut response_rx) = mpsc:: channel :: < Arc < HttpMessage > > ( 10000 ) ;
133141 loop {
134142 tokio:: select! {
@@ -818,7 +826,7 @@ impl HttpMessage {
818826#[ cfg( test) ]
819827mod tests {
820828 use crate :: codegen:: { HttpMessageArgs , HttpQuery , HttpQueryArgs , HttpTable , HttpTableArgs } ;
821- use crate :: config:: init_test_logger;
829+ use crate :: config:: { init_test_logger, Config } ;
822830 use crate :: http:: { HttpCommand , HttpMessage , HttpServer } ;
823831 use crate :: metastore:: { Column , ColumnType } ;
824832 use crate :: mysql:: MockSqlAuthService ;
@@ -1018,13 +1026,18 @@ mod tests {
10181026 } ;
10191027 let mut auth = MockSqlAuthService :: new ( ) ;
10201028 auth. expect_authenticate ( ) . return_const ( Ok ( None ) ) ;
1029+
1030+ let config = Config :: test ( "ws_test" ) . config_obj ( ) ;
1031+
10211032 let http_server = Arc :: new ( HttpServer :: new (
10221033 "127.0.0.1:53031" . to_string ( ) ,
10231034 Arc :: new ( auth) ,
10241035 Arc :: new ( sql_service) ,
10251036 Duration :: from_millis ( 100 ) ,
10261037 Duration :: from_millis ( 10000 ) ,
10271038 Duration :: from_millis ( 1000 ) ,
1039+ config. transport_max_message_size ( ) ,
1040+ config. transport_max_frame_size ( ) ,
10281041 ) ) ;
10291042 {
10301043 let http_server = http_server. clone ( ) ;
0 commit comments