diff options
author | Jake McGinty <me@jake.su> | 2018-04-02 00:48:11 -0700 |
---|---|---|
committer | Jake McGinty <me@jake.su> | 2018-04-02 00:48:11 -0700 |
commit | 2c6d8edd168ff7f7f8ee085658540518ca99aca1 (patch) | |
tree | 9c0807ac59be6b74587b9f1b89d428beaf112ec5 /src | |
parent | clippy: remove unnecessary iter() (diff) | |
download | wireguard-rs-2c6d8edd168ff7f7f8ee085658540518ca99aca1.tar.xz wireguard-rs-2c6d8edd168ff7f7f8ee085658540518ca99aca1.zip |
config: return error when trying to remove nonexistent peer
Diffstat (limited to 'src')
-rw-r--r-- | src/interface/config.rs | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/interface/config.rs b/src/interface/config.rs index 4836862..3dda7a9 100644 --- a/src/interface/config.rs +++ b/src/interface/config.rs @@ -250,7 +250,6 @@ impl ConfigurationService { let _ = state.pubkey_map.insert(info.pub_key, peer_ref.clone()); state.router.add_allowed_ips(&info.allowed_ips, &peer_ref); }; - }, UpdateEvent::RemoveAllPeers => { state.pubkey_map.clear(); @@ -258,17 +257,15 @@ impl ConfigurationService { state.router.clear(); }, UpdateEvent::RemovePeer(pub_key) => { - if let Some(peer_ref) = state.pubkey_map.remove(&pub_key) { - let peer = peer_ref.borrow(); - let indices = peer.get_mapped_indices(); + let peer_ref = state.pubkey_map.remove(&pub_key) + .ok_or_else(|| err_msg("trying to remove nonexistent peer"))?; + let peer = peer_ref.borrow(); + let indices = peer.get_mapped_indices(); - for index in indices { - let _ = state.index_map.remove(&index); - } - state.router.remove_allowed_ips(&peer.info.allowed_ips); - } else { - info!("RemovePeer request for nonexistent peer."); + for index in indices { + let _ = state.index_map.remove(&index); } + state.router.remove_allowed_ips(&peer.info.allowed_ips); }, } Ok(()) |