Nicer port in use errors (#2859)

* dapps port

* rpc port

* signer port

* different instance as possible cause

* network port
This commit is contained in:
keorn 2016-10-25 14:55:53 +01:00 committed by Gav Wood
parent 4fc1c5f42e
commit 8d0cff3599
4 changed files with 20 additions and 4 deletions

View File

@ -102,6 +102,7 @@ mod server {
use super::Dependencies; use super::Dependencies;
use std::sync::Arc; use std::sync::Arc;
use std::net::SocketAddr; use std::net::SocketAddr;
use std::io;
use util::{Bytes, Address, U256}; use util::{Bytes, Address, U256};
use ethcore::transaction::{Transaction, Action}; use ethcore::transaction::{Transaction, Action};
@ -143,7 +144,10 @@ mod server {
}; };
match start_result { match start_result {
Err(dapps::ServerError::IoError(err)) => Err(format!("WebApps io error: {}", err)), Err(dapps::ServerError::IoError(err)) => match err.kind() {
io::ErrorKind::AddrInUse => Err(format!("WebApps address {} is already in use, make sure that another instance of an Ethereum client is not running or change the address using the --dapps-port and --dapps-interface options.", url)),
_ => Err(format!("WebApps io error: {}", err)),
},
Err(e) => Err(format!("WebApps error: {:?}", e)), Err(e) => Err(format!("WebApps error: {:?}", e)),
Ok(server) => { Ok(server) => {
server.set_panic_handler(move || { server.set_panic_handler(move || {

View File

@ -17,6 +17,7 @@
use std::fmt; use std::fmt;
use std::sync::Arc; use std::sync::Arc;
use std::net::SocketAddr; use std::net::SocketAddr;
use std::io;
use io::PanicHandler; use io::PanicHandler;
use ethcore_rpc::{RpcServerError, RpcServer as Server}; use ethcore_rpc::{RpcServerError, RpcServer as Server};
use jsonipc; use jsonipc;
@ -108,7 +109,10 @@ pub fn setup_http_rpc_server(
let ph = dependencies.panic_handler.clone(); let ph = dependencies.panic_handler.clone();
let start_result = server.start_http(url, cors_domains, allowed_hosts, ph); let start_result = server.start_http(url, cors_domains, allowed_hosts, ph);
match start_result { match start_result {
Err(RpcServerError::IoError(err)) => Err(format!("RPC io error: {}", err)), Err(RpcServerError::IoError(err)) => match err.kind() {
io::ErrorKind::AddrInUse => Err(format!("RPC address {} is already in use, make sure that another instance of an Ethereum client is not running or change the address using the --jsonrpc-port and --jsonrpc-interface options.", url)),
_ => Err(format!("RPC io error: {}", err)),
},
Err(e) => Err(format!("RPC error: {:?}", e)), Err(e) => Err(format!("RPC error: {:?}", e)),
Ok(server) => Ok(server), Ok(server) => Ok(server),
} }

View File

@ -103,7 +103,10 @@ fn do_start(conf: Configuration, deps: Dependencies) -> Result<SignerServer, Str
}; };
match start_result { match start_result {
Err(signer::ServerError::IoError(err)) => Err(format!("Trusted Signer Error: {}", err)), Err(signer::ServerError::IoError(err)) => match err.kind() {
io::ErrorKind::AddrInUse => Err(format!("Trusted Signer address {} is already in use, make sure that another instance of an Ethereum client is not running or change the address using the --signer-port and --signer-interface options.", addr)),
_ => Err(format!("Trusted Signer io error: {}", err)),
},
Err(e) => Err(format!("Trusted Signer Error: {:?}", e)), Err(e) => Err(format!("Trusted Signer Error: {:?}", e)),
Ok(server) => { Ok(server) => {
deps.panic_handler.forward_from(&server); deps.panic_handler.forward_from(&server);

View File

@ -16,6 +16,7 @@
use std::sync::Arc; use std::sync::Arc;
use std::collections::HashMap; use std::collections::HashMap;
use std::io;
use util::Bytes; use util::Bytes;
use network::{NetworkProtocolHandler, NetworkService, NetworkContext, PeerId, ProtocolId, use network::{NetworkProtocolHandler, NetworkService, NetworkContext, PeerId, ProtocolId,
NetworkConfiguration as BasicNetworkConfiguration, NonReservedPeerMode, NetworkError, NetworkConfiguration as BasicNetworkConfiguration, NonReservedPeerMode, NetworkError,
@ -210,7 +211,11 @@ impl ChainNotify for EthSync {
} }
fn start(&self) { fn start(&self) {
self.network.start().unwrap_or_else(|e| warn!("Error starting network: {:?}", e)); match self.network.start() {
Err(NetworkError::StdIo(ref e)) if e.kind() == io::ErrorKind::AddrInUse => warn!("Network port {:?} is already in use, make sure that another instance of an Ethereum client is not running or change the port using the --port option.", self.network.config().listen_address.expect("Listen address is not set.")),
Err(err) => warn!("Error starting network: {}", err),
_ => {},
}
self.network.register_protocol(self.handler.clone(), self.subprotocol_name, ETH_PACKET_COUNT, &[62u8, 63u8]) self.network.register_protocol(self.handler.clone(), self.subprotocol_name, ETH_PACKET_COUNT, &[62u8, 63u8])
.unwrap_or_else(|e| warn!("Error registering ethereum protocol: {:?}", e)); .unwrap_or_else(|e| warn!("Error registering ethereum protocol: {:?}", e));
// register the warp sync subprotocol // register the warp sync subprotocol