Merge branch 'master' into jsonrpc_security

This commit is contained in:
debris 2016-02-23 10:28:27 +01:00
commit bda778626c
3 changed files with 8 additions and 10 deletions

View File

@ -74,7 +74,7 @@ Options:
--peers NUM Try to manintain that many peers [default: 25]. --peers NUM Try to manintain that many peers [default: 25].
--no-discovery Disable new peer discovery. --no-discovery Disable new peer discovery.
--upnp Use UPnP to try to figure out the correct network settings. --upnp Use UPnP to try to figure out the correct network settings.
--node-key KEY Specify node secret key as hex string. --node-key KEY Specify node secret key, either as 64-character hex string or input to SHA3 operation.
--cache-pref-size BYTES Specify the prefered size of the blockchain cache in bytes [default: 16384]. --cache-pref-size BYTES Specify the prefered size of the blockchain cache in bytes [default: 16384].
--cache-max-size BYTES Specify the maximum size of the blockchain cache in bytes [default: 262144]. --cache-max-size BYTES Specify the maximum size of the blockchain cache in bytes [default: 262144].
@ -216,17 +216,17 @@ impl Configuration {
let mut public_address = None; let mut public_address = None;
if let Some(ref a) = self.args.flag_address { if let Some(ref a) = self.args.flag_address {
public_address = Some(SocketAddr::from_str(a.as_ref()).expect("Invalid listen/public address given with --address")); public_address = Some(SocketAddr::from_str(a.as_ref()).unwrap_or_else(|_| die!("{}: Invalid listen/public address given with --address", a)));
listen_address = public_address; listen_address = public_address;
} }
if listen_address.is_none() { if listen_address.is_none() {
listen_address = Some(SocketAddr::from_str(self.args.flag_listen_address.as_ref()).expect("Invalid listen address given with --listen-address")); listen_address = Some(SocketAddr::from_str(self.args.flag_listen_address.as_ref()).unwrap_or_else(|_| die!("{}: Invalid listen/public address given with --listen-address", self.args.flag_listen_address)));
} }
if let Some(ref a) = self.args.flag_public_address { if let Some(ref a) = self.args.flag_public_address {
if public_address.is_some() { if public_address.is_some() {
panic!("Conflicting flags: --address and --public-address"); die!("Conflicting flags provided: --address and --public-address");
} }
public_address = Some(SocketAddr::from_str(a.as_ref()).expect("Invalid listen address given with --public-address")); public_address = Some(SocketAddr::from_str(a.as_ref()).unwrap_or_else(|_| die!("{}: Invalid listen/public address given with --public-address", a)));
} }
(listen_address, public_address) (listen_address, public_address)
} }
@ -238,7 +238,7 @@ impl Configuration {
let (listen, public) = self.net_addresses(); let (listen, public) = self.net_addresses();
ret.listen_address = listen; ret.listen_address = listen;
ret.public_address = public; ret.public_address = public;
ret.use_secret = self.args.flag_node_key.as_ref().map(|s| Secret::from_str(&s).expect("Invalid key string")); ret.use_secret = self.args.flag_node_key.as_ref().map(|s| Secret::from_str(&s).unwrap_or_else(|_| s.sha3()));
ret.discovery_enabled = !self.args.flag_no_discovery; ret.discovery_enabled = !self.args.flag_no_discovery;
ret.ideal_peers = self.args.flag_peers; ret.ideal_peers = self.args.flag_peers;
let mut net_path = PathBuf::from(&self.path()); let mut net_path = PathBuf::from(&self.path());
@ -282,6 +282,7 @@ impl Configuration {
// Setup rpc // Setup rpc
if self.args.flag_jsonrpc { if self.args.flag_jsonrpc {
setup_rpc_server(service.client(), sync.clone(), &self.args.flag_jsonrpc_url, &self.args.flag_jsonrpc_cors); setup_rpc_server(service.client(), sync.clone(), &self.args.flag_jsonrpc_url, &self.args.flag_jsonrpc_cors);
SocketAddr::from_str(&self.args.flag_jsonrpc_url).unwrap_or_else(|_|die!("{}: Invalid JSONRPC listen address given with --jsonrpc-url. Should be of the form 'IP:port'.", self.args.flag_jsonrpc_url));
} }
// Register IO handler // Register IO handler

View File

@ -276,9 +276,6 @@ impl Discovery {
} }
pub fn writable(&mut self) { pub fn writable(&mut self) {
if self.send_queue.is_empty() {
return;
}
while !self.send_queue.is_empty() { while !self.send_queue.is_empty() {
let data = self.send_queue.pop_front().unwrap(); let data = self.send_queue.pop_front().unwrap();
match self.udp_socket.send_to(&data.payload, &data.address) { match self.udp_socket.send_to(&data.payload, &data.address) {

View File

@ -163,7 +163,7 @@ impl Display for Node {
impl FromStr for Node { impl FromStr for Node {
type Err = UtilError; type Err = UtilError;
fn from_str(s: &str) -> Result<Self, Self::Err> { fn from_str(s: &str) -> Result<Self, Self::Err> {
let (id, endpoint) = if &s[0..8] == "enode://" && s.len() > 136 && &s[136..137] == "@" { let (id, endpoint) = if s.len() > 136 && &s[0..8] == "enode://" && &s[136..137] == "@" {
(try!(NodeId::from_str(&s[8..136])), try!(NodeEndpoint::from_str(&s[137..]))) (try!(NodeId::from_str(&s[8..136])), try!(NodeEndpoint::from_str(&s[137..])))
} }
else { else {