src/server/rest.rs: improve error handling

This commit is contained in:
Dietmar Maurer 2019-05-23 08:15:32 +02:00
parent 907f5bb0d8
commit 1179e15842

View File

@ -239,10 +239,10 @@ pub fn handle_sync_api_request<Env: RpcEnvironment>(
let resp = params let resp = params
.and_then(move |params| { .and_then(move |params| {
let mut delay = false; let mut delay = false;
let resp = match (info.handler.as_ref().unwrap())(params, info, &mut rpcenv) { let resp = match (info.handler.as_ref().unwrap())(params, info, &mut rpcenv) {
Ok(data) => (formatter.format_data)(data, &rpcenv), Ok(data) => (formatter.format_data)(data, &rpcenv),
Err(err) => { Err(err) => {
if let Some(httperr) = err.downcast_ref::<HttpError>() { if let Some(httperr) = err.downcast_ref::<HttpError>() {
if httperr.code == StatusCode::UNAUTHORIZED { delay = true; } if httperr.code == StatusCode::UNAUTHORIZED { delay = true; }
} }
(formatter.format_error)(err) (formatter.format_error)(err)
@ -258,6 +258,9 @@ pub fn handle_sync_api_request<Env: RpcEnvironment>(
} else { } else {
Either::B(future::ok(resp)) Either::B(future::ok(resp))
} }
})
.or_else(move |err| {
Ok((formatter.format_error)(err))
}); });
Box::new(resp) Box::new(resp)