Permit --gossip-host with --entrypoint

This commit is contained in:
Michael Vines 2020-01-01 22:59:36 -07:00
parent 63f185f9bf
commit 965b132664
1 changed files with 23 additions and 16 deletions

View File

@ -9,7 +9,7 @@ use solana_client::rpc_client::RpcClient;
use solana_core::{contact_info::ContactInfo, gossip_service::discover}; use solana_core::{contact_info::ContactInfo, gossip_service::discover};
use solana_sdk::pubkey::Pubkey; use solana_sdk::pubkey::Pubkey;
use std::error; use std::error;
use std::net::SocketAddr; use std::net::{IpAddr, Ipv4Addr, SocketAddr};
use std::process::exit; use std::process::exit;
fn main() -> Result<(), Box<dyn error::Error>> { fn main() -> Result<(), Box<dyn error::Error>> {
@ -74,9 +74,8 @@ fn main() -> Result<(), Box<dyn error::Error>> {
.long("gossip-host") .long("gossip-host")
.value_name("HOST") .value_name("HOST")
.takes_value(true) .takes_value(true)
.conflicts_with("entrypoint")
.validator(solana_net_utils::is_host) .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(
Arg::with_name("num_nodes") Arg::with_name("num_nodes")
@ -164,21 +163,29 @@ fn main() -> Result<(), Box<dyn error::Error>> {
let entrypoint_addr = parse_entrypoint(&matches); let entrypoint_addr = parse_entrypoint(&matches);
let gossip_host = if let Some(entrypoint_addr) = entrypoint_addr { let gossip_host = matches
solana_net_utils::get_public_ip_addr(&entrypoint_addr).unwrap_or_else(|err| { .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!( eprintln!(
"Failed to contact cluster entrypoint {}: {}", "Failed to contact cluster entrypoint {}: {}",
entrypoint_addr, err entrypoint_addr, err
); );
exit(1); exit(1);
}) },
)
} else { } else {
solana_net_utils::parse_host(matches.value_of("gossip_host").unwrap_or("127.0.0.1")) IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1))
.unwrap_or_else(|err| { }
eprintln!("Error: {}", err); });
exit(1);
})
};
let gossip_addr = SocketAddr::new( let gossip_addr = SocketAddr::new(
gossip_host, gossip_host,