Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
Find the alive incoming entry on disconnect. (#6320)
Browse files Browse the repository at this point in the history
When a peer in `Incoming` state disconnects, the "alive" entry
in the `incoming` list for that peer must be updated (set to `false`).
Currently the entry that is updated may be an earlier entry for the
same peer that is already no longer alive. This can happen if a
peer repeatedly connects (incoming) and disconnects between invocations to
`poll()` of the behaviour.
  • Loading branch information
romanb authored Jun 11, 2020
1 parent 606c56d commit 164fb3b
Showing 1 changed file with 3 additions and 1 deletion.
4 changes: 3 additions & 1 deletion client/network/src/protocol/generic_proto/behaviour.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1086,7 +1086,9 @@ impl NetworkBehaviour for GenericProto {
// In the incoming state, we don't report "Dropped". Instead we will just ignore the
// corresponding Accept/Reject.
Some(PeerState::Incoming { }) => {
if let Some(state) = self.incoming.iter_mut().find(|i| i.peer_id == *peer_id) {
if let Some(state) = self.incoming.iter_mut()
.find(|i| i.alive && i.peer_id == *peer_id)
{
debug!(target: "sub-libp2p",
"Libp2p => Disconnected({}): Was in incoming mode with id {:?}.",
peer_id, state.incoming_id);
Expand Down

0 comments on commit 164fb3b

Please sign in to comment.