diff --git a/src/network/p2p/client.rs b/src/network/p2p/client.rs index 92691bd42..f347deb5f 100644 --- a/src/network/p2p/client.rs +++ b/src/network/p2p/client.rs @@ -113,7 +113,6 @@ impl Command for StartListening { struct AddAddress { peer_id: PeerId, peer_addr: Multiaddr, - response_sender: Option>>, } impl Command for AddAddress { @@ -123,19 +122,10 @@ impl Command for AddAddress { .kademlia .add_address(&self.peer_id, self.peer_addr.clone()); - // insert response channel into Swarm Events pending map - entries.insert_swarm_event(self.peer_id, self.response_sender.take().unwrap()); Ok(()) } - fn abort(&mut self, error: Report) { - // TODO: consider what to do if this results with None - self.response_sender - .take() - .unwrap() - .send(Err(error)) - .expect("AddAddress receiver dropped"); - } + fn abort(&mut self, _error: Report) {} } struct Bootstrap { @@ -452,14 +442,10 @@ impl Client { } pub async fn add_address(&self, peer_id: PeerId, peer_addr: Multiaddr) -> Result<()> { - self.execute_sync(|response_sender| { - Box::new(AddAddress { - peer_id, - peer_addr, - response_sender: Some(response_sender), - }) - }) - .await + self.command_sender + .send(Box::new(AddAddress { peer_id, peer_addr })) + .await + .context("failed to add address to the routing table") } pub async fn dial_peer(&self, peer_id: PeerId, peer_address: Multiaddr) -> Result<()> { diff --git a/src/network/p2p/event_loop.rs b/src/network/p2p/event_loop.rs index 305c7cfd3..0db51dcfb 100644 --- a/src/network/p2p/event_loop.rs +++ b/src/network/p2p/event_loop.rs @@ -76,8 +76,9 @@ struct BootstrapState { pub struct EventLoop { swarm: Swarm, command_receiver: CommandReceiver, + // Tracking Kademlia events pending_kad_queries: HashMap, - pending_kad_routing: HashMap>>, + // Tracking swarm events (i.e. peer dialing) pending_swarm_events: HashMap>>, relay: RelayState, bootstrap: BootstrapState, @@ -126,7 +127,6 @@ impl EventLoop { swarm, command_receiver, pending_kad_queries: Default::default(), - pending_kad_routing: Default::default(), pending_swarm_events: Default::default(), relay: RelayState { id: PeerId::random(), @@ -197,9 +197,6 @@ impl EventLoop { .. } => { trace!("Routing updated. Peer: {peer:?}. is_new_peer: {is_new_peer:?}. Addresses: {addresses:#?}. Old peer: {old_peer:#?}"); - if let Some(ch) = self.pending_kad_routing.remove(&peer) { - _ = ch.send(Ok(())); - } }, kad::Event::RoutablePeer { peer, address } => { trace!("RoutablePeer. Peer: {peer:?}. Address: {address:?}"); @@ -507,7 +504,7 @@ impl EventLoop { if let Err(err) = command.run(EventLoopEntries::new( &mut self.swarm, &mut self.pending_kad_queries, - &mut self.pending_kad_routing, + &mut self.pending_swarm_events, &mut self.active_blocks, )) { command.abort(eyre!(err));