aboutsummaryrefslogtreecommitdiffstats
path: root/src/wireguard/wireguard.rs
diff options
context:
space:
mode:
authorMathias Hall-Andersen <mathias@hall-andersen.dk>2019-12-16 16:37:16 +0100
committerMathias Hall-Andersen <mathias@hall-andersen.dk>2019-12-16 16:37:16 +0100
commit22f978f0142286b26b48a25364236436b9bad56d (patch)
treec8d4bf722e1134c8a66d821b63b7f04eec93a9b0 /src/wireguard/wireguard.rs
parentRevert to crossbeam (diff)
downloadwireguard-rs-22f978f0142286b26b48a25364236436b9bad56d.tar.xz
wireguard-rs-22f978f0142286b26b48a25364236436b9bad56d.zip
Clean dead code
Diffstat (limited to '')
-rw-r--r--src/wireguard/wireguard.rs11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/wireguard/wireguard.rs b/src/wireguard/wireguard.rs
index 2cd6ce4..45b1fcb 100644
--- a/src/wireguard/wireguard.rs
+++ b/src/wireguard/wireguard.rs
@@ -236,7 +236,9 @@ impl<T: tun::Tun, B: udp::UDP> Wireguard<T, B> {
}
pub fn remove_peer(&self, pk: &PublicKey) {
- self.state.peers.write().remove(pk.as_bytes());
+ if self.handshake.write().remove(pk).is_ok() {
+ self.state.peers.write().remove(pk.as_bytes());
+ }
}
pub fn lookup_peer(&self, pk: &PublicKey) -> Option<Peer<T, B>> {
@@ -258,7 +260,10 @@ impl<T: tun::Tun, B: udp::UDP> Wireguard<T, B> {
}
pub fn set_key(&self, sk: Option<StaticSecret>) {
- self.handshake.write().set_sk(sk);
+ let mut handshake = self.handshake.write();
+ handshake.set_sk(sk);
+ self.router.clear_sending_keys();
+ // handshake lock is released and new handshakes can be initated
}
pub fn get_sk(&self) -> Option<StaticSecret> {
@@ -577,7 +582,7 @@ impl<T: tun::Tun, B: udp::UDP> Wireguard<T, B> {
);
// this means that a handshake response was processed or sent
- peer.timers_session_derieved();
+ peer.timers_session_derived();
// free any unused ids
for id in peer.router.add_keypair(kp) {