Skip to content
This repository was archived by the owner on Nov 15, 2023. It is now read-only.
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Find the alive incoming entry on disconnect.
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
Roman S. Borschel committed Jun 10, 2020
commit 6cb7f00b85da6e9571eb9e4b27a50616cda13ef1
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