@@ -103,12 +103,13 @@ async fn handle_rpc<S: Storage + Send + Sync + 'static>(
103103 let mut body = req. into_body ( ) ;
104104 let data = match body. data ( ) . await {
105105 Some ( Ok ( data) ) => data,
106- _ => {
107- let resp = jrt:: Response :: < ( ) , ( ) > :: error (
108- jrt:: Version :: V2 ,
109- jrt:: Error :: from_code ( jrt:: ErrorCode :: ParseError ) ,
110- None ,
111- ) ;
106+ err_or_none => {
107+ let mut error = jrt:: Error :: with_custom_msg ( jrt:: ErrorCode :: ParseError , "Couldn't read the RPC body" ) ;
108+ if let Some ( Err ( err) ) = err_or_none {
109+ error. data = Some ( err. to_string ( ) ) ;
110+ }
111+
112+ let resp = jrt:: Response :: < ( ) , String > :: error ( jrt:: Version :: V2 , error, None ) ;
112113 let body = serde_json:: to_vec ( & resp) . unwrap_or_default ( ) ;
113114
114115 return Ok ( hyper:: Response :: new ( body. into ( ) ) ) ;
@@ -121,7 +122,7 @@ async fn handle_rpc<S: Storage + Send + Sync + 'static>(
121122 Err ( _) => {
122123 let resp = jrt:: Response :: < ( ) , ( ) > :: error (
123124 jrt:: Version :: V2 ,
124- jrt:: Error :: from_code ( jrt:: ErrorCode :: ParseError ) ,
125+ jrt:: Error :: with_custom_msg ( jrt:: ErrorCode :: ParseError , "Couldn't parse the RPC body" ) ,
125126 None ,
126127 ) ;
127128 let body = serde_json:: to_vec ( & resp) . unwrap_or_default ( ) ;
@@ -309,23 +310,21 @@ fn read_params(req: &jrt::Request<Params>) -> Result<Vec<serde_json::Value>, jrt
309310}
310311
311312/// Converts the crate's RpcError into a jrt::RpcError
312- fn convert_crate_err ( err : crate :: error:: RpcError ) -> jrt:: Error < ( ) > {
313- let mut err = err. to_string ( ) ;
314- err. truncate ( 31 ) ; // json-rpc-type Error length limit
315- jrt:: Error :: with_custom_msg ( jrt:: ErrorCode :: ServerError ( 0 ) , & err)
313+ fn convert_crate_err ( err : crate :: error:: RpcError ) -> jrt:: Error < String > {
314+ let error = jrt:: Error :: with_custom_msg ( jrt:: ErrorCode :: ServerError ( -32000 ) , "internal error" ) ;
315+ error. set_data ( err. to_string ( ) )
316316}
317317
318318/// Converts the jsonrpc-core's Error into a jrt::RpcError
319- fn convert_core_err ( err : jsonrpc_core:: Error ) -> jrt:: Error < ( ) > {
320- let mut err = err. to_string ( ) ;
321- err. truncate ( 31 ) ; // json-rpc-type Error length limit
322- jrt:: Error :: with_custom_msg ( jrt:: ErrorCode :: InternalError , & err)
319+ fn convert_core_err ( err : jsonrpc_core:: Error ) -> jrt:: Error < String > {
320+ let error = jrt:: Error :: with_custom_msg ( jrt:: ErrorCode :: InternalError , "JSONRPC server error" ) ;
321+ error. set_data ( err. to_string ( ) )
323322}
324323
325324fn result_to_response < T : Serialize > (
326325 request : & jrt:: Request < Params > ,
327- result : Result < T , jrt:: Error < ( ) > > ,
328- ) -> jrt:: Response < serde_json:: Value , ( ) > {
326+ result : Result < T , jrt:: Error < String > > ,
327+ ) -> jrt:: Response < serde_json:: Value , String > {
329328 match result {
330329 Ok ( res) => {
331330 let result = serde_json:: to_value ( & res) . unwrap_or_default ( ) ;
0 commit comments