Skip to content
Snippets Groups Projects
Commit e296cf8c authored by Svyatoslav Nikolsky's avatar Svyatoslav Nikolsky Committed by GitHub
Browse files

fix panic in PSM when add_reserved_peer(same_peer) is called twice (#2640)

parent b9c39d77
No related merge requests found
......@@ -291,6 +291,10 @@ impl<'a> ConnectedPeer<'a> {
/// Sets whether or not the node is reserved.
pub fn set_reserved(&mut self, reserved: bool) {
if reserved == self.state.reserved {
return;
}
if reserved {
self.state.reserved = true;
match self.state.connection_state {
......@@ -595,4 +599,16 @@ mod tests {
peer.set_reserved(true);
peer.disconnect();
}
#[test]
fn multiple_set_reserved_calls_doesnt_panic() {
let mut peers_state = PeersState::new(1, 1);
let id = PeerId::random();
let mut peer = peers_state.peer(&id)
.into_unknown().unwrap().discover()
.force_outgoing();
peer.set_reserved(true);
peer.set_reserved(true);
peer.disconnect();
}
}
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment