@@ -241,23 +241,9 @@ impl GenMessage {
241241 . await
242242 . map_err ( |e| Error :: Socket ( e. to_string ( ) ) ) ?;
243243
244- if header. length > MESSAGE_LENGTH_MAX as u32 {
245- #[ cfg( not( feature = "prost" ) ) ]
246- return Err ( get_rpc_status (
247- Code :: INVALID_ARGUMENT ,
248- format ! (
249- "message length {} exceed maximum message size of {}" ,
250- header. length, MESSAGE_LENGTH_MAX
251- ) ,
252- ) ) ;
253- #[ cfg( feature = "prost" ) ]
254- return Err ( get_rpc_status (
255- Code :: InvalidArgument ,
256- format ! (
257- "message length {} exceed maximum message size of {}" ,
258- header. length, MESSAGE_LENGTH_MAX
259- ) ,
260- ) ) ;
244+ if let Err ( e) = check_oversize ( header. length as usize , true ) {
245+ discard_message_body ( reader, & header) . await ?;
246+ return Err ( GenMessageError :: ReturnError ( header, e) ) ;
261247 }
262248
263249 let mut content = vec ! [ 0 ; header. length as usize ] ;
@@ -407,23 +393,12 @@ where
407393 . await
408394 . map_err ( |e| Error :: Socket ( e. to_string ( ) ) ) ?;
409395
410- if header. length > MESSAGE_LENGTH_MAX as u32 {
411- #[ cfg( not( feature = "prost" ) ) ]
412- return Err ( get_rpc_status (
413- Code :: INVALID_ARGUMENT ,
414- format ! (
415- "message length {} exceed maximum message size of {}" ,
416- header. length, MESSAGE_LENGTH_MAX
417- ) ,
418- ) ) ;
419- #[ cfg( feature = "prost" ) ]
420- return Err ( get_rpc_status (
421- Code :: InvalidArgument ,
422- format ! (
423- "message length {} exceed maximum message size of {}" ,
424- header. length, MESSAGE_LENGTH_MAX
425- ) ,
426- ) ) ;
396+ if check_oversize ( header. length as usize , true ) . is_err ( ) {
397+ discard_message_body ( reader, & header) . await ?;
398+ return Ok ( Self {
399+ header,
400+ payload : C :: decode ( "" ) . map_err ( err_to_others_err ! ( e, "Decode payload failed." ) ) ?,
401+ } ) ;
427402 }
428403
429404 let mut content = vec ! [ 0 ; header. length as usize ] ;
0 commit comments