aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJake McGinty <me@jake.su>2017-12-30 15:19:38 -0800
committerJake McGinty <me@jake.su>2017-12-30 15:19:38 -0800
commit43796fac2c20a2a769acb23a780cf996bb3bf2f4 (patch)
treed893171f3db586a93880fe26cbc21d6baa6c535e /src
parentreport last handshake time, expire old keepalive timers (diff)
downloadwireguard-rs-43796fac2c20a2a769acb23a780cf996bb3bf2f4.tar.xz
wireguard-rs-43796fac2c20a2a769acb23a780cf996bb3bf2f4.zip
fix repeating keepalive timer
Diffstat (limited to 'src')
-rw-r--r--src/interface/peer_server.rs9
-rw-r--r--src/protocol/peer.rs2
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,
}
}