From 50169b51737be3c6221d8a767ae8fdb03e171ea9 Mon Sep 17 00:00:00 2001 From: Jake McGinty Date: Thu, 26 Apr 2018 15:54:40 -0700 Subject: peer_server: make Error the error type, not () --- src/interface/mod.rs | 6 ++++-- src/interface/peer_server.rs | 21 +++++++++------------ src/main.rs | 2 +- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/interface/mod.rs b/src/interface/mod.rs index 110706a..c670bbe 100644 --- a/src/interface/mod.rs +++ b/src/interface/mod.rs @@ -99,7 +99,7 @@ impl Interface { let peer_server = PeerServer::new(core.handle(), self.state.clone(), utun_tx.clone())?; let config_server = ConfigurationService::new(&self.name, &self.state, &core.handle())?; - let config_server = config_server.forward(peer_server.config_tx()).map_err(|_|()); + let config_server = config_server.forward(peer_server.config_tx()).map_err(|_|()); // TODO: don't just forward, this is so hacky. let utun_stream = UtunStream::connect(&self.name, &core.handle())?.framed(VecUtunCodec{}); let (utun_writer, utun_reader) = utun_stream.split(); @@ -116,7 +116,9 @@ impl Interface { let utun_futs = utun_write_fut.join(utun_read_fut); - let fut = peer_server.join(config_server.join(utun_futs)); + let fut = peer_server + .map_err(|e| error!("peer_server error: {:?}", e)) + .join(config_server.join(utun_futs)); let _ = core.run(fut); info!("reactor finished."); diff --git a/src/interface/peer_server.rs b/src/interface/peer_server.rs index 4de6eec..7832e85 100644 --- a/src/interface/peer_server.rs +++ b/src/interface/peer_server.rs @@ -409,7 +409,7 @@ impl PeerServer { impl Future for PeerServer { type Item = (); - type Error = (); + type Error = Error; fn poll(&mut self) -> Poll { // Handle config events @@ -440,7 +440,8 @@ impl Future for PeerServer { } }, Ok(Async::NotReady) => break, - Ok(Async::Ready(None)) | Err(_) => return Err(()), + Ok(Async::Ready(None)) => bail!("config stream ended unexpectedly"), + Err(e) => bail!("config stream error: {:?}", e), } } @@ -451,7 +452,8 @@ impl Future for PeerServer { let _ = self.handle_timer(message).map_err(|e| debug!("TIMER: {}", e)); }, Ok(Async::NotReady) => break, - Ok(Async::Ready(None)) | Err(_) => return Err(()), + Ok(Async::Ready(None)) => bail!("timer stream ended unexpectedly"), + Err(e) => bail!("timer stream error: {:?}", e), } } @@ -463,14 +465,8 @@ impl Future for PeerServer { let _ = self.handle_ingress_packet(addr, packet).map_err(|e| warn!("UDP ERR: {:?}", e)); }, Ok(Async::NotReady) => break, - Ok(Async::Ready(None)) => { - error!("AHHHHHHHHHH Async::Ready(None) returned by UDP!!"); - return Err(()); - }, - Err(e) => { - error!("AHHHHHHHHHH {:?}", e); - return Err(()); - } + Ok(Async::Ready(None)) => bail!("incoming udp stream ended unexpectedly"), + Err(e) => bail!("incoming udp stream error: {:?}", e) } } } @@ -482,7 +478,8 @@ impl Future for PeerServer { let _ = self.handle_egress_packet(packet).map_err(|e| warn!("UDP ERR: {:?}", e)); }, Ok(Async::NotReady) => break, - Ok(Async::Ready(None)) | Err(_) => return Err(()), + Ok(Async::Ready(None)) => bail!("outgoing udp stream ended unexpectedly"), + Err(e) => bail!("outgoing udp stream error: {:?}", e), } } diff --git a/src/main.rs b/src/main.rs index 0c49343..183503c 100644 --- a/src/main.rs +++ b/src/main.rs @@ -61,7 +61,7 @@ fn main() { )) }) .level(log::LevelFilter::Info) - .level_for("wireguard", log::LevelFilter::Trace) + .level_for("wireguard", log::LevelFilter::Debug) .chain(std::io::stdout()) .apply().unwrap(); -- cgit v1.2.3-59-g8ed1b