aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJake McGinty <me@jake.su>2018-05-03 18:19:12 -0700
committerJake McGinty <me@jake.su>2018-05-03 18:19:12 -0700
commit48edd7ad976f695b53b27d39f375c1fdfaede7bf (patch)
treeebe0c8644ce50ce14fd7301138baa2dd264851b4
parenttimers: refactor out timers from Session struct (diff)
downloadwireguard-rs-48edd7ad976f695b53b27d39f375c1fdfaede7bf.tar.xz
wireguard-rs-48edd7ad976f695b53b27d39f375c1fdfaede7bf.zip
peer_server: move config change handling code to own method
-rw-r--r--src/interface/peer_server.rs49
1 files changed, 27 insertions, 22 deletions
diff --git a/src/interface/peer_server.rs b/src/interface/peer_server.rs
index 2053a8c..ff3e356 100644
--- a/src/interface/peer_server.rs
+++ b/src/interface/peer_server.rs
@@ -421,6 +421,32 @@ impl PeerServer {
}
Ok(())
}
+
+ fn handle_incoming_event(&mut self, event: ChannelMessage) -> Result<(), Error> {
+ use self::ChannelMessage::*;
+ match event {
+ NewPrivateKey => {
+ 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;
+ }
+ },
+ NewListenPort(_) => self.rebind().unwrap(),
+ NewFwmark(mark) => {
+ if let Some(ref udp) = self.udp {
+ udp.set_mark(mark).unwrap();
+ }
+ }
+ _ => {}
+ }
+ Ok(())
+ }
}
impl Future for PeerServer {
@@ -430,30 +456,9 @@ impl Future for PeerServer {
fn poll(&mut self) -> Poll<Self::Item, Self::Error> {
// Handle config events
loop {
- use self::ChannelMessage::*;
match self.channel.rx.poll() {
Ok(Async::Ready(Some(event))) => {
- match event {
- NewPrivateKey => {
- 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;
- }
- },
- NewListenPort(_) => self.rebind().unwrap(),
- NewFwmark(mark) => {
- if let Some(ref udp) = self.udp {
- udp.set_mark(mark).unwrap();
- }
- }
- _ => {}
- }
+ let _ = self.handle_incoming_event(event);
},
Ok(Async::NotReady) => break,
Ok(Async::Ready(None)) => bail!("config stream ended unexpectedly"),