aboutsummaryrefslogtreecommitdiffstats
path: root/src/handshake/device.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/handshake/device.rs')
-rw-r--r--src/handshake/device.rs10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/handshake/device.rs b/src/handshake/device.rs
index 2a06fa7..6178831 100644
--- a/src/handshake/device.rs
+++ b/src/handshake/device.rs
@@ -64,10 +64,16 @@ impl Device {
self.macs = macs::Validator::new(pk);
// recalculate the shared secrets for every peer
- for &mut peer in self.pk_map.values_mut() {
- peer.reset_state().map(|id| self.release(id));
+ let mut ids = vec![];
+ for mut peer in self.pk_map.values_mut() {
+ peer.reset_state().map(|id| ids.push(id));
peer.ss = self.sk.diffie_hellman(&peer.pk)
}
+
+ // release ids from aborted handshakes
+ for id in ids {
+ self.release(id)
+ }
}
/// Add a new public key to the state machine