diff options
author | Jake McGinty <me@jake.su> | 2018-03-09 02:48:52 +0000 |
---|---|---|
committer | Jake McGinty <me@jake.su> | 2018-03-09 02:48:52 +0000 |
commit | 82fc7a85f8b8c3486b8331d33f0a0f8a61bf160f (patch) | |
tree | 499d0aeb4e1d3287e9d8b5d9886ece5abf250b48 /src/interface | |
parent | peer: enforce max egress packet queue size (diff) | |
download | wireguard-rs-82fc7a85f8b8c3486b8331d33f0a0f8a61bf160f.tar.xz wireguard-rs-82fc7a85f8b8c3486b8331d33f0a0f8a61bf160f.zip |
sessions: handle next -> past transition
Diffstat (limited to 'src/interface')
-rw-r--r-- | src/interface/peer_server.rs | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/interface/peer_server.rs b/src/interface/peer_server.rs index 534eb1b..622213e 100644 --- a/src/interface/peer_server.rs +++ b/src/interface/peer_server.rs @@ -139,7 +139,10 @@ impl PeerServer { .ok_or_else(|| err_msg("unknown peer pubkey"))?.clone(); let index = Self::unused_index(&mut state); - let response = peer_ref.borrow_mut().complete_incoming_handshake(addr, index, handshake)?; + let (response, dead_index) = peer_ref.borrow_mut().complete_incoming_handshake(addr, index, handshake)?; + if let Some(index) = dead_index { + let _ = state.index_map.remove(&index); + } let _ = state.index_map.insert(index, peer_ref.clone()); self.send_to_peer((addr, response))?; |