From 965b1326641e3bfb7c338002b5eb38d7263ba163 Mon Sep 17 00:00:00 2001 From: Michael Vines Date: Wed, 1 Jan 2020 22:59:36 -0700 Subject: [PATCH] Permit --gossip-host with --entrypoint --- gossip/src/main.rs | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/gossip/src/main.rs b/gossip/src/main.rs index ae12564b1..04c206e61 100644 --- a/gossip/src/main.rs +++ b/gossip/src/main.rs @@ -9,7 +9,7 @@ use solana_client::rpc_client::RpcClient; use solana_core::{contact_info::ContactInfo, gossip_service::discover}; use solana_sdk::pubkey::Pubkey; use std::error; -use std::net::SocketAddr; +use std::net::{IpAddr, Ipv4Addr, SocketAddr}; use std::process::exit; fn main() -> Result<(), Box> { @@ -74,9 +74,8 @@ fn main() -> Result<(), Box> { .long("gossip-host") .value_name("HOST") .takes_value(true) - .conflicts_with("entrypoint") .validator(solana_net_utils::is_host) - .help("Gossip DNS name or IP address for the node when --entrypoint is not provided [default: 127.0.0.1]"), + .help("Gossip DNS name or IP address for the node [default: ask --entrypoint, or 127.0.0.1 when --entrypoint is not provided]"), ) .arg( Arg::with_name("num_nodes") @@ -164,21 +163,29 @@ fn main() -> Result<(), Box> { let entrypoint_addr = parse_entrypoint(&matches); - let gossip_host = if let Some(entrypoint_addr) = entrypoint_addr { - solana_net_utils::get_public_ip_addr(&entrypoint_addr).unwrap_or_else(|err| { - eprintln!( - "Failed to contact cluster entrypoint {}: {}", - entrypoint_addr, err - ); - exit(1); - }) - } else { - solana_net_utils::parse_host(matches.value_of("gossip_host").unwrap_or("127.0.0.1")) - .unwrap_or_else(|err| { - eprintln!("Error: {}", err); + let gossip_host = matches + .value_of("gossip_host") + .map(|gossip_host| { + solana_net_utils::parse_host(gossip_host).unwrap_or_else(|e| { + eprintln!("failed to parse gossip-host: {}", e); exit(1); }) - }; + }) + .unwrap_or_else(|| { + if let Some(entrypoint_addr) = entrypoint_addr { + solana_net_utils::get_public_ip_addr(&entrypoint_addr).unwrap_or_else( + |err| { + eprintln!( + "Failed to contact cluster entrypoint {}: {}", + entrypoint_addr, err + ); + exit(1); + }, + ) + } else { + IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)) + } + }); let gossip_addr = SocketAddr::new( gossip_host,