More detailed fatal error reporting (#1016)
This commit is contained in:
parent
8f7624f5cb
commit
f83a8f3ba1
@ -24,27 +24,27 @@ macro_rules! die {
|
|||||||
($($arg:tt)*) => (die_with_message(&format!("{}", format_args!($($arg)*))));
|
($($arg:tt)*) => (die_with_message(&format!("{}", format_args!($($arg)*))));
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn die_with_error(e: ethcore::error::Error) -> ! {
|
pub fn die_with_error(module: &'static str, e: ethcore::error::Error) -> ! {
|
||||||
use ethcore::error::Error;
|
use ethcore::error::Error;
|
||||||
|
|
||||||
match e {
|
match e {
|
||||||
Error::Util(UtilError::StdIo(e)) => die_with_io_error(e),
|
Error::Util(UtilError::StdIo(e)) => die_with_io_error(module, e),
|
||||||
_ => die!("{:?}", e),
|
_ => die!("{}: {:?}", module, e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn die_with_io_error(e: std::io::Error) -> ! {
|
pub fn die_with_io_error(module: &'static str, e: std::io::Error) -> ! {
|
||||||
match e.kind() {
|
match e.kind() {
|
||||||
std::io::ErrorKind::PermissionDenied => {
|
std::io::ErrorKind::PermissionDenied => {
|
||||||
die!("No permissions to bind to specified port.")
|
die!("{}: No permissions to bind to specified port.", module)
|
||||||
},
|
},
|
||||||
std::io::ErrorKind::AddrInUse => {
|
std::io::ErrorKind::AddrInUse => {
|
||||||
die!("Specified address is already in use. Please make sure that nothing is listening on the same port or try using a different one.")
|
die!("{}: Specified address is already in use. Please make sure that nothing is listening on the same port or try using a different one.", module)
|
||||||
},
|
},
|
||||||
std::io::ErrorKind::AddrNotAvailable => {
|
std::io::ErrorKind::AddrNotAvailable => {
|
||||||
die!("Could not use specified interface or given address is invalid.")
|
die!("{}: Could not use specified interface or given address is invalid.", module)
|
||||||
},
|
},
|
||||||
_ => die!("{:?}", e),
|
_ => die!("{}: {:?}", module, e),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,7 +140,7 @@ fn execute_client(conf: Configuration) {
|
|||||||
// Build client
|
// Build client
|
||||||
let mut service = ClientService::start(
|
let mut service = ClientService::start(
|
||||||
client_config, spec, net_settings, &Path::new(&conf.path())
|
client_config, spec, net_settings, &Path::new(&conf.path())
|
||||||
).unwrap_or_else(|e| die_with_error(e));
|
).unwrap_or_else(|e| die_with_error("Client", e));
|
||||||
|
|
||||||
panic_handler.forward_from(&service);
|
panic_handler.forward_from(&service);
|
||||||
let client = service.client();
|
let client = service.client();
|
||||||
|
@ -107,8 +107,8 @@ pub fn setup_rpc_server(
|
|||||||
}
|
}
|
||||||
let start_result = server.start_http(url, cors_domain);
|
let start_result = server.start_http(url, cors_domain);
|
||||||
match start_result {
|
match start_result {
|
||||||
Err(RpcServerError::IoError(err)) => die_with_io_error(err),
|
Err(RpcServerError::IoError(err)) => die_with_io_error("RPC", err),
|
||||||
Err(e) => die!("{:?}", e),
|
Err(e) => die!("RPC: {:?}", e),
|
||||||
Ok(server) => {
|
Ok(server) => {
|
||||||
server.set_panic_handler(move || {
|
server.set_panic_handler(move || {
|
||||||
deps.panic_handler.notify_all("Panic in RPC thread.".to_owned());
|
deps.panic_handler.notify_all("Panic in RPC thread.".to_owned());
|
||||||
|
@ -113,8 +113,8 @@ pub fn setup_webapp_server(
|
|||||||
};
|
};
|
||||||
|
|
||||||
match start_result {
|
match start_result {
|
||||||
Err(webapp::ServerError::IoError(err)) => die_with_io_error(err),
|
Err(webapp::ServerError::IoError(err)) => die_with_io_error("WebApps", err),
|
||||||
Err(e) => die!("{:?}", e),
|
Err(e) => die!("WebApps: {:?}", e),
|
||||||
Ok(server) => {
|
Ok(server) => {
|
||||||
server.set_panic_handler(move || {
|
server.set_panic_handler(move || {
|
||||||
deps.panic_handler.notify_all("Panic in WebApp thread.".to_owned());
|
deps.panic_handler.notify_all("Panic in WebApp thread.".to_owned());
|
||||||
|
Loading…
Reference in New Issue
Block a user