From 80830d2e1d62344bac0693ffd7f237d120a9636d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bastian=20K=C3=B6cher?= <bkchr@users.noreply.github.com>
Date: Fri, 13 Nov 2020 22:38:55 +0100
Subject: [PATCH] Enable local addresses in DHT when chain type == `Local` |
 `Development` (#7538)

* Enable local addresses in DHT when chain type == `Local` | `Development`

This pr changes when to add local addresses to DHT. Instead of only
checking if `--discover-local` and `--dev` are present, we now also
check if the chain type is `Local` or `Development`.

* Update the docs!
---
 substrate/client/cli/src/params/network_params.rs | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/substrate/client/cli/src/params/network_params.rs b/substrate/client/cli/src/params/network_params.rs
index 209742f54e9..a973d61272c 100644
--- a/substrate/client/cli/src/params/network_params.rs
+++ b/substrate/client/cli/src/params/network_params.rs
@@ -21,7 +21,7 @@ use sc_network::{
 	config::{NetworkConfiguration, NodeKeyConfig, NonReservedPeerMode, TransportConfig},
 	multiaddr::Protocol,
 };
-use sc_service::{ChainSpec, config::{Multiaddr, MultiaddrWithPeerId}};
+use sc_service::{ChainSpec, ChainType, config::{Multiaddr, MultiaddrWithPeerId}};
 use std::path::PathBuf;
 use structopt::StructOpt;
 
@@ -94,7 +94,8 @@ pub struct NetworkParams {
 
 	/// Enable peer discovery on local networks.
 	///
-	/// By default this option is true for `--dev` and false otherwise.
+	/// By default this option is `true` for `--dev` or when the chain type is `Local`/`Development`
+	/// and false otherwise.
 	#[structopt(long)]
 	pub discover_local: bool,
 
@@ -139,6 +140,13 @@ impl NetworkParams {
 		let mut boot_nodes = chain_spec.boot_nodes().to_vec();
 		boot_nodes.extend(self.bootnodes.clone());
 
+		let chain_type = chain_spec.chain_type();
+		// Activate if the user explicitly requested local discovery, `--dev` is given or the
+		// chain type is `Local`/`Development`
+		let allow_non_globals_in_dht = self.discover_local
+			|| is_dev
+			|| matches!(chain_type, ChainType::Local | ChainType::Development);
+
 		NetworkConfiguration {
 			boot_nodes,
 			net_config_path,
@@ -163,7 +171,7 @@ impl NetworkParams {
 				wasm_external_transport: None,
 			},
 			max_parallel_downloads: self.max_parallel_downloads,
-			allow_non_globals_in_dht: self.discover_local || is_dev,
+			allow_non_globals_in_dht,
 			kademlia_disjoint_query_paths: self.kademlia_disjoint_query_paths,
 		}
 	}
-- 
GitLab