Skip to content

Commit

Permalink
[p2p] Use event for peer disconnection
Browse files Browse the repository at this point in the history
  • Loading branch information
cloudhead committed Nov 11, 2023
1 parent 71cd341 commit 2e111bd
Show file tree
Hide file tree
Showing 6 changed files with 18 additions and 28 deletions.
5 changes: 0 additions & 5 deletions p2p/src/fsm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -813,13 +813,8 @@ impl<T: BlockTree, F: Filters, P: peer::Store, C: AdjustedClock<PeerId>> traits:
addr: &net::SocketAddr,
reason: nakamoto_net::Disconnect<DisconnectReason>,
) {
self.cbfmgr.peer_disconnected(addr);
self.syncmgr.peer_disconnected(addr);
self.addrmgr.peer_disconnected(addr, reason.clone());
self.pingmgr.peer_disconnected(addr);
self.peermgr
.peer_disconnected(addr, &mut self.addrmgr, reason);
self.invmgr.peer_disconnected(addr);
}

fn tick(&mut self, local_time: LocalTime) {
Expand Down
5 changes: 4 additions & 1 deletion p2p/src/fsm/addrmgr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,9 @@ impl<P: Store, C: Clock> AddressManager<P, C> {
}
self.peer_negotiated(&addr, services, link);
}
Event::PeerDisconnected { addr, reason } => {
self.peer_disconnected(&addr, reason);
}
Event::MessageReceived { from, message } => {
if let Some(ka) = self.peers.get_mut(&from.ip()) {
ka.last_active = Some(self.clock.local_time());
Expand Down Expand Up @@ -255,7 +258,7 @@ impl<P: Store, C: Clock> AddressManager<P, C> {
}

/// Called when a peer disconnected.
pub fn peer_disconnected(
fn peer_disconnected(
&mut self,
addr: &net::SocketAddr,
reason: Disconnect<super::DisconnectReason>,
Expand Down
8 changes: 3 additions & 5 deletions p2p/src/fsm/cbfmgr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,9 @@ impl<F: Filters, C: Clock> FilterManager<F, C> {
} => {
self.peer_negotiated(addr, height, services, link, persistent, tree);
}
Event::PeerDisconnected { addr, .. } => {
self.peers.remove(&addr);
}
Event::BlockProcessed { block, height, .. } => {
if self.pending_blocks.remove(&height) {
self.outbox.event(Event::BlockMatched { block, height });
Expand Down Expand Up @@ -507,11 +510,6 @@ impl<F: Filters, C: Clock> FilterManager<F, C> {
Ok(())
}

/// Called when a peer disconnected.
pub fn peer_disconnected(&mut self, id: &PeerId) {
self.peers.remove(id);
}

/// Called when a new peer was negotiated.
pub fn peer_negotiated<T: BlockReader>(
&mut self,
Expand Down
10 changes: 4 additions & 6 deletions p2p/src/fsm/invmgr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -168,6 +168,9 @@ impl<C: Clock> InventoryManager<C> {
} => {
self.peer_negotiated(addr, services, relay, wtxid_relay);
}
Event::PeerDisconnected { addr, .. } => {
self.peers.remove(&addr);
}
Event::BlockHeadersImported {
result: ImportResult::TipChanged { reverted, .. },
..
Expand All @@ -191,7 +194,7 @@ impl<C: Clock> InventoryManager<C> {
}

/// Called when a peer is negotiated.
pub fn peer_negotiated(
fn peer_negotiated(
&mut self,
addr: PeerId,
services: ServiceFlags,
Expand All @@ -218,11 +221,6 @@ impl<C: Clock> InventoryManager<C> {
);
}

/// Called when a peer disconnected.
pub fn peer_disconnected(&mut self, id: &PeerId) {
self.peers.remove(id);
}

/// Called when a block is reverted.
pub fn block_reverted(&mut self, height: Height) {
self.estimator.rollback(height - 1);
Expand Down
10 changes: 4 additions & 6 deletions p2p/src/fsm/pingmgr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ impl<C: Clock> PingManager<C> {
Event::PeerNegotiated { addr, .. } => {
self.peer_negotiated(addr);
}
Event::PeerDisconnected { addr, .. } => {
self.peers.remove(&addr);
}
Event::MessageReceived { from, message } => match message.as_ref() {
NetworkMessage::Ping(nonce) => {
self.received_ping(from, *nonce);
Expand All @@ -109,7 +112,7 @@ impl<C: Clock> PingManager<C> {
}

/// Called when a peer is negotiated.
pub fn peer_negotiated(&mut self, address: PeerId) {
fn peer_negotiated(&mut self, address: PeerId) {
let nonce = self.rng.u64(..);
let now = self.clock.local_time();

Expand All @@ -124,11 +127,6 @@ impl<C: Clock> PingManager<C> {
);
}

/// Called when a peer is disconnected.
pub fn peer_disconnected(&mut self, addr: &PeerId) {
self.peers.remove(addr);
}

/// Called when a tick is received.
pub fn received_wake(&mut self) {
let now = self.clock.local_time();
Expand Down
8 changes: 3 additions & 5 deletions p2p/src/fsm/syncmgr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,9 @@ impl<C: Clock> SyncManager<C> {
} => {
self.peer_negotiated(addr, height, services, link, tree);
}
Event::PeerDisconnected { addr, .. } => {
self.unregister(&addr);
}
Event::MessageReceived { from, message } => match message.as_ref() {
NetworkMessage::Headers(headers) => {
self.received_headers(&from, headers, tree);
Expand Down Expand Up @@ -214,11 +217,6 @@ impl<C: Clock> SyncManager<C> {
self.sync(tree);
}

/// Called when a peer disconnected.
pub fn peer_disconnected(&mut self, id: &PeerId) {
self.unregister(id);
}

/// Called when we received a `getheaders` message from a peer.
pub fn received_getheaders<T: BlockReader>(
&mut self,
Expand Down

0 comments on commit 2e111bd

Please sign in to comment.