diff --git a/substrate/substrate/cli/src/cli.yml b/substrate/substrate/cli/src/cli.yml index 0d6fd8795ad88312e50338e9b29df409cb6cb435..e6b8e395d2a364c58ffdf6a90298b067c4f2efcc 100644 --- a/substrate/substrate/cli/src/cli.yml +++ b/substrate/substrate/cli/src/cli.yml @@ -76,6 +76,16 @@ args: help: Specify a list of reserved node addresses takes_value: true multiple: true + - min-peers: + long: min-peers + value_name: MIN_PEERS + help: Specify the minimum number of peers + takes_value: true + - max-peers: + long: max-peers + value_name: MAX_PEERS + help: Specify the maximum number of peers + takes_value: true - chain: long: chain value_name: CHAIN_SPEC diff --git a/substrate/substrate/cli/src/lib.rs b/substrate/substrate/cli/src/lib.rs index 801e808c51d1ff158b3b4204c242da1006e6276c..a1064cccc44001ff91ef3f9ef8ad5cd818fade2f 100644 --- a/substrate/substrate/cli/src/lib.rs +++ b/substrate/substrate/cli/src/lib.rs @@ -301,6 +301,20 @@ where Some(Err(err)) => return Err(format!("Error parsing node key: {}", err).into()), None => None, }; + + let min_peers = match matches.value_of("min-peers") { + Some(min_peers) => min_peers.parse().map_err(|_| "Invalid min-peers value specified.")?, + None => 25, + }; + let max_peers = match matches.value_of("max-peers") { + Some(max_peers) => max_peers.parse().map_err(|_| "Invalid max-peers value specified.")?, + None => 50, + }; + if min_peers > max_peers { + return Err(error::ErrorKind::Input("Min-peers mustn't be larger than max-peers.".to_owned()).into()); + } + config.network.min_peers = min_peers; + config.network.max_peers = max_peers; } config.keys = matches.values_of("key").unwrap_or_default().map(str::to_owned).collect();