diff options
author | Jake McGinty <me@jake.su> | 2018-02-24 16:45:08 +0000 |
---|---|---|
committer | Jake McGinty <me@jake.su> | 2018-02-24 16:45:08 +0000 |
commit | 930d2e80679703b1acdf7d0c9702e80d63f915ad (patch) | |
tree | fae21fc8f995196f1fb33f6b30ff9acfe8e7e989 /src/peer.rs | |
parent | rekey timer re-work for correctness (diff) | |
download | wireguard-rs-930d2e80679703b1acdf7d0c9702e80d63f915ad.tar.xz wireguard-rs-930d2e80679703b1acdf7d0c9702e80d63f915ad.zip |
zero-out timer
Diffstat (limited to 'src/peer.rs')
-rw-r--r-- | src/peer.rs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/peer.rs b/src/peer.rs index 5721081..1773d6b 100644 --- a/src/peer.rs +++ b/src/peer.rs @@ -1,7 +1,7 @@ use anti_replay::AntiReplay; use byteorder::{ByteOrder, LittleEndian}; use consts::{TRANSPORT_OVERHEAD, TRANSPORT_HEADER_SIZE, MAX_SEGMENT_SIZE, REKEY_AFTER_MESSAGES, - REKEY_AFTER_TIME, RECV_REKEY_AFTER_TIME, REJECT_AFTER_MESSAGES, PADDING_MULTIPLE}; + REKEY_AFTER_TIME, REKEY_AFTER_TIME_RECV, REJECT_AFTER_MESSAGES, PADDING_MULTIPLE}; use cookie; use failure::{Error, err_msg}; use interface::UtunPacket; @@ -112,6 +112,18 @@ pub struct Sessions { pub next : Option<Session>, } +impl Sessions { + /// Remove all stored sessions from memory, returning all of our indices that were stored + /// in order to clear out caches/maps. + pub fn wipe(&mut self) -> Vec<u32> { + let indices = vec![mem::replace(&mut self.past, None), + mem::replace(&mut self.current, None), + mem::replace(&mut self.next, None)]; + + indices.into_iter().filter_map(|sesh| sesh.map(|s| s.our_index)).collect() + } +} + impl Display for Peer { fn fmt(&self, f: &mut Formatter) -> fmt::Result { write!(f, "Peer({})", self.info) @@ -169,7 +181,7 @@ impl Peer { debug!("needs new handshake: sending after REKEY_AFTER_TIME"); return true; } - if !sending && self.last_handshake.elapsed() > *RECV_REKEY_AFTER_TIME { + if !sending && self.last_handshake.elapsed() > *REKEY_AFTER_TIME_RECV { debug!("needs new handshake: receiving after RECV_REKEY_AFTER_TIME"); return true; } |