aboutsummaryrefslogtreecommitdiffstats
path: root/src/interface/peer_server.rs
diff options
context:
space:
mode:
authorJake McGinty <me@jake.su>2018-04-24 23:40:09 -0700
committerJake McGinty <me@jake.su>2018-04-24 23:40:09 -0700
commit93b57bc36f2bdd5095993fb34eb13ebc52a51ae6 (patch)
tree04ac71c3fd97e65c950da510cc0385a2ae95c8b4 /src/interface/peer_server.rs
parentglobal: fix up clippies (diff)
downloadwireguard-rs-93b57bc36f2bdd5095993fb34eb13ebc52a51ae6.tar.xz
wireguard-rs-93b57bc36f2bdd5095993fb34eb13ebc52a51ae6.zip
config: allow private keys to be unset
Diffstat (limited to 'src/interface/peer_server.rs')
-rw-r--r--src/interface/peer_server.rs20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/interface/peer_server.rs b/src/interface/peer_server.rs
index a115023..4de6eec 100644
--- a/src/interface/peer_server.rs
+++ b/src/interface/peer_server.rs
@@ -59,6 +59,13 @@ impl PeerServer {
pub fn rebind(&mut self) -> Result<(), Error> {
let interface = &self.shared_state.borrow().interface_info;
+
+ if interface.private_key.is_none() {
+ self.udp = None;
+ self.port = None;
+ return Ok(());
+ }
+
let port = interface.listen_port.unwrap_or(0);
let fwmark = interface.fwmark.unwrap_or(0);
@@ -412,10 +419,15 @@ impl Future for PeerServer {
Ok(Async::Ready(Some(event))) => {
match event {
PrivateKey(_) => {
- let pub_key = &self.shared_state.borrow().interface_info.pub_key.unwrap();
- self.cookie = cookie::Validator::new(pub_key);
- if self.udp.is_none() {
- self.rebind().unwrap();
+ let pub_key = self.shared_state.borrow().interface_info.pub_key;
+ if let Some(ref pub_key) = pub_key {
+ self.cookie = cookie::Validator::new(pub_key);
+ if self.udp.is_none() {
+ self.rebind().unwrap();
+ }
+ } else {
+ self.udp = None;
+ self.port = None;
}
},
ListenPort(_) => self.rebind().unwrap(),