diff options
Diffstat (limited to 'src/peer.rs')
-rw-r--r-- | src/peer.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/peer.rs b/src/peer.rs index 9e9a01e..2331a09 100644 --- a/src/peer.rs +++ b/src/peer.rs @@ -275,9 +275,11 @@ impl Peer { _ => unreachable!() } - let mut next_session = Session::with_their_index(noise, index, their_index); - let response_packet = self.get_response_packet(&mut next_session)?; - let old_next = mem::replace(&mut self.sessions.next, Some(next_session.into_transport_mode()?)); + let mut next_session = Session::with_their_index(noise, index, their_index); + next_session.birthday = Timestamp::now(); + + let response_packet = self.get_response_packet(&mut next_session)?; + let old_next = mem::replace(&mut self.sessions.next, Some(next_session.into_transport_mode()?)); let dead_index = if old_next.is_some() { mem::replace(&mut self.sessions.past, old_next).map(|session| session.our_index) @@ -360,8 +362,7 @@ impl Peer { let current = std::mem::replace(&mut self.sessions.current, next); let dead = std::mem::replace(&mut self.sessions.past, current); - self.sessions.current.as_mut().unwrap().birthday = Timestamp::now(); - self.last_handshake = Timestamp::now(); + self.last_handshake = Timestamp::now(); SessionTransition::Transition(dead.map(|session| session.our_index)) } else { |