From c5c9b56e940ab4cd5fd80bede8b35687d3972120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= <bkchr@users.noreply.github.com> Date: Fri, 17 Apr 2020 09:53:52 +0200 Subject: [PATCH] Listen on ipv6 by default as well (#5677) Instead of just listening on ipv4 by default, this enables listening on ipv6 as well. While doing this, it also fixes a bug which lead to always listen on all sockets, even if we specify listen addresses explicitly. --- .../client/cli/src/params/network_params.rs | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/substrate/client/cli/src/params/network_params.rs b/substrate/client/cli/src/params/network_params.rs index 21e44f97822..6d9ffd6a6e5 100644 --- a/substrate/client/cli/src/params/network_params.rs +++ b/substrate/client/cli/src/params/network_params.rs @@ -20,8 +20,6 @@ use sc_network::{ multiaddr::Protocol, }; use sc_service::{ChainSpec, config::{Multiaddr, MultiaddrWithPeerId}}; -use std::iter; -use std::net::Ipv4Addr; use std::path::PathBuf; use structopt::StructOpt; @@ -48,9 +46,7 @@ pub struct NetworkParams { pub listen_addr: Vec<Multiaddr>, /// Specify p2p protocol TCP port. - /// - /// Only used if --listen-addr is not specified. - #[structopt(long = "port", value_name = "PORT")] + #[structopt(long = "port", value_name = "PORT", conflicts_with_all = &[ "listen-addr" ])] pub port: Option<u16>, /// Forbid connecting to private IPv4 addresses (as specified in @@ -106,11 +102,19 @@ impl NetworkParams { node_key: NodeKeyConfig, ) -> NetworkConfiguration { let port = self.port.unwrap_or(30333); - let mut listen_addresses = vec![iter::once(Protocol::Ip4(Ipv4Addr::new(0, 0, 0, 0))) - .chain(iter::once(Protocol::Tcp(port))) - .collect()]; - listen_addresses.extend(self.listen_addr.iter().cloned()); + let listen_addresses = if self.listen_addr.is_empty() { + vec![ + Multiaddr::empty() + .with(Protocol::Ip4([0, 0, 0, 0].into())) + .with(Protocol::Tcp(port)), + Multiaddr::empty() + .with(Protocol::Ip6([0, 0, 0, 0, 0, 0, 0, 0].into())) + .with(Protocol::Tcp(port)), + ] + } else { + self.listen_addr.clone() + }; let mut boot_nodes = chain_spec.boot_nodes().to_vec(); boot_nodes.extend(self.bootnodes.clone()); -- GitLab