From 48edd7ad976f695b53b27d39f375c1fdfaede7bf Mon Sep 17 00:00:00 2001 From: Jake McGinty Date: Thu, 3 May 2018 18:19:12 -0700 Subject: peer_server: move config change handling code to own method --- src/interface/peer_server.rs | 49 ++++++++++++++++++++++++-------------------- 1 file 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 { // 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"), -- cgit v1.2.3-59-g8ed1b