aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJake McGinty <me@jake.su>2018-04-26 15:54:40 -0700
committerJake McGinty <me@jake.su>2018-04-26 15:54:40 -0700
commit50169b51737be3c6221d8a767ae8fdb03e171ea9 (patch)
tree977920cdf27ffaa36d7035a0e8a83e5eaa375cf6
parenttests: gate iperf3 behind flag argument (diff)
downloadwireguard-rs-50169b51737be3c6221d8a767ae8fdb03e171ea9.tar.xz
wireguard-rs-50169b51737be3c6221d8a767ae8fdb03e171ea9.zip
peer_server: make Error the error type, not ()
-rw-r--r--src/interface/mod.rs6
-rw-r--r--src/interface/peer_server.rs21
-rw-r--r--src/main.rs2
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<Self::Item, Self::Error> {
// 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();