diff options
author | Jake McGinty <me@jake.su> | 2017-12-30 15:19:38 -0800 |
---|---|---|
committer | Jake McGinty <me@jake.su> | 2017-12-30 15:19:38 -0800 |
commit | 43796fac2c20a2a769acb23a780cf996bb3bf2f4 (patch) | |
tree | d893171f3db586a93880fe26cbc21d6baa6c535e /src | |
parent | report last handshake time, expire old keepalive timers (diff) | |
download | wireguard-rs-43796fac2c20a2a769acb23a780cf996bb3bf2f4.tar.xz wireguard-rs-43796fac2c20a2a769acb23a780cf996bb3bf2f4.zip |
fix repeating keepalive timer
Diffstat (limited to 'src')
-rw-r--r-- | src/interface/peer_server.rs | 9 | ||||
-rw-r--r-- | src/protocol/peer.rs | 2 |
2 files changed, 6 insertions, 5 deletions
diff --git a/src/interface/peer_server.rs b/src/interface/peer_server.rs index b6d9e40..6c8bf36 100644 --- a/src/interface/peer_server.rs +++ b/src/interface/peer_server.rs @@ -118,10 +118,11 @@ impl PeerServer { move |_| -> Box<Future<Item = _, Error = _>> { if peer_ref.borrow().our_current_index().unwrap() != our_index { info!("cancelling old keepalive_timer"); - return Box::new(future::err(())); + Box::new(future::err(())) + } else { + Box::new(timer_tx.clone().send(TimerMessage::KeepAlive(peer_ref.clone(), our_index)) + .then(|_| Ok(()))) } - Box::new(timer_tx.clone().send(TimerMessage::KeepAlive(peer_ref.clone(), our_index)) - .then(|_| Ok(()))) } }); self.handle.spawn(keepalive_future); @@ -195,7 +196,7 @@ impl PeerServer { let len = noise.write_message(&[], &mut packet[16..]).expect("failed to encrypt outgoing keepalive"); packet.truncate(len + 16); self.handle.spawn(self.udp_tx.clone().send((endpoint, packet)).then(|_| Ok(()))); - info!("sent keepalive"); + debug!("sent keepalive"); } } } diff --git a/src/protocol/peer.rs b/src/protocol/peer.rs index 8d32c6e..ed0bbd1 100644 --- a/src/protocol/peer.rs +++ b/src/protocol/peer.rs @@ -58,7 +58,7 @@ impl From<snow::Session> for Session { fn from(session: snow::Session) -> Self { Session { noise: session, - our_index: 0, + our_index: rand::thread_rng().gen::<u32>(), their_index: 0, } } |