From e83d85f620a2381f378d1e767142ee2b2ffe9c4a Mon Sep 17 00:00:00 2001
From: Guanqun Lu <guanqun.lu@gmail.com>
Date: Tue, 14 Aug 2018 19:09:01 +0800
Subject: [PATCH] cli: add min-peers and max-peers (#557)

---
 substrate/substrate/cli/src/cli.yml | 10 ++++++++++
 substrate/substrate/cli/src/lib.rs  | 14 ++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/substrate/substrate/cli/src/cli.yml b/substrate/substrate/cli/src/cli.yml
index 0d6fd8795ad..e6b8e395d2a 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 801e808c51d..a1064cccc44 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();
-- 
GitLab