mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-19 22:51:03 +00:00
sc-network: Do not return error on peer id only reserved nodes (#11346)
When passing reserved nodes only with a peer id it was failing with the `DuplicateBootnode` error. Besides that there are some clean ups. We for example added the bootnodes twice to the `known_addresses`.
This commit is contained in:
@@ -356,13 +356,15 @@ where
|
|||||||
let mut default_sets_reserved = HashSet::new();
|
let mut default_sets_reserved = HashSet::new();
|
||||||
for reserved in network_config.default_peers_set.reserved_nodes.iter() {
|
for reserved in network_config.default_peers_set.reserved_nodes.iter() {
|
||||||
default_sets_reserved.insert(reserved.peer_id);
|
default_sets_reserved.insert(reserved.peer_id);
|
||||||
known_addresses.push((reserved.peer_id, reserved.multiaddr.clone()));
|
|
||||||
|
if !reserved.multiaddr.is_empty() {
|
||||||
|
known_addresses.push((reserved.peer_id, reserved.multiaddr.clone()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut bootnodes = Vec::with_capacity(network_config.boot_nodes.len());
|
let mut bootnodes = Vec::with_capacity(network_config.boot_nodes.len());
|
||||||
for bootnode in network_config.boot_nodes.iter() {
|
for bootnode in network_config.boot_nodes.iter() {
|
||||||
bootnodes.push(bootnode.peer_id);
|
bootnodes.push(bootnode.peer_id);
|
||||||
known_addresses.push((bootnode.peer_id, bootnode.multiaddr.clone()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set number 0 is used for block announces.
|
// Set number 0 is used for block announces.
|
||||||
|
|||||||
@@ -228,12 +228,10 @@ where
|
|||||||
)?;
|
)?;
|
||||||
|
|
||||||
// List of multiaddresses that we know in the network.
|
// List of multiaddresses that we know in the network.
|
||||||
let mut bootnodes = Vec::new();
|
|
||||||
let mut boot_node_ids = HashSet::new();
|
let mut boot_node_ids = HashSet::new();
|
||||||
|
|
||||||
// Process the bootnodes.
|
// Process the bootnodes.
|
||||||
for bootnode in params.network_config.boot_nodes.iter() {
|
for bootnode in params.network_config.boot_nodes.iter() {
|
||||||
bootnodes.push(bootnode.peer_id);
|
|
||||||
boot_node_ids.insert(bootnode.peer_id);
|
boot_node_ids.insert(bootnode.peer_id);
|
||||||
known_addresses.push((bootnode.peer_id, bootnode.multiaddr.clone()));
|
known_addresses.push((bootnode.peer_id, bootnode.multiaddr.clone()));
|
||||||
}
|
}
|
||||||
@@ -241,12 +239,18 @@ where
|
|||||||
let boot_node_ids = Arc::new(boot_node_ids);
|
let boot_node_ids = Arc::new(boot_node_ids);
|
||||||
|
|
||||||
// Check for duplicate bootnodes.
|
// Check for duplicate bootnodes.
|
||||||
known_addresses.iter().try_for_each(|(peer_id, addr)| {
|
params.network_config.boot_nodes.iter().try_for_each(|bootnode| {
|
||||||
if let Some(other) = known_addresses.iter().find(|o| o.1 == *addr && o.0 != *peer_id) {
|
if let Some(other) = params
|
||||||
|
.network_config
|
||||||
|
.boot_nodes
|
||||||
|
.iter()
|
||||||
|
.filter(|o| o.multiaddr == bootnode.multiaddr)
|
||||||
|
.find(|o| o.peer_id != bootnode.peer_id)
|
||||||
|
{
|
||||||
Err(Error::DuplicateBootnode {
|
Err(Error::DuplicateBootnode {
|
||||||
address: addr.clone(),
|
address: bootnode.multiaddr.clone(),
|
||||||
first_id: *peer_id,
|
first_id: bootnode.peer_id,
|
||||||
second_id: other.0,
|
second_id: other.peer_id,
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
Reference in New Issue
Block a user