fix: always set Kademlia mode to server (#14703)

otherwise, connectivity drops significantly.
This commit is contained in:
Anton
2023-08-03 21:53:42 +04:00
committed by GitHub
parent fef9723d65
commit 476ee340d9
+5 -12
View File
@@ -55,6 +55,7 @@ use ip_network::IpNetwork;
use libp2p::{
core::{Endpoint, Multiaddr},
kad::{
self,
record::store::{MemoryStore, RecordStore},
GetClosestPeersError, GetRecordOk, Kademlia, KademliaBucketInserts, KademliaConfig,
KademliaEvent, QueryId, QueryResult, Quorum, Record, RecordKey,
@@ -222,6 +223,9 @@ impl DiscoveryConfig {
let store = MemoryStore::new(local_peer_id);
let mut kad = Kademlia::with_config(local_peer_id, store, config);
// Always set the mode to server, so that any node can accept incoming Kademlia
// requests. Otherwise, the connectivity degrades significantly.
kad.set_mode(Some(kad::Mode::Server));
for (peer_id, addr) in &permanent_addresses {
kad.add_address(peer_id, addr.clone());
@@ -983,7 +987,7 @@ mod tests {
upgrade,
},
identity::Keypair,
kad, noise,
noise,
swarm::{Executor, Swarm, SwarmBuilder, SwarmEvent},
yamux, Multiaddr,
};
@@ -1038,17 +1042,6 @@ mod tests {
)
.build();
// Set the Kademlia mode to server so that it can accept incoming requests.
//
// Note: the server mode is set automatically when the node learns its external
// address, but that does not happen in tests => hence we set it manually.
swarm
.behaviour_mut()
.kademlia
.as_mut()
.unwrap()
.set_mode(Some(kad::Mode::Server));
let listen_addr: Multiaddr =
format!("/memory/{}", rand::random::<u64>()).parse().unwrap();