aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJake McGinty <me@jake.su>2018-02-05 12:53:42 +0000
committerJake McGinty <me@jake.su>2018-02-05 12:53:42 +0000
commit50d4095e3c63542c47b5f0077b10e012fc50a4fc (patch)
tree06ec85aeb01dffbf3188e786e4d4fc0e66053ee5 /src
parentstart removing some panics (diff)
downloadwireguard-rs-50d4095e3c63542c47b5f0077b10e012fc50a4fc.tar.xz
wireguard-rs-50d4095e3c63542c47b5f0077b10e012fc50a4fc.zip
make the fallback-session code a bit more canonical rust
Diffstat (limited to 'src')
-rw-r--r--src/interface/peer_server.rs20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/interface/peer_server.rs b/src/interface/peer_server.rs
index 4619b30..b9cccd5 100644
--- a/src/interface/peer_server.rs
+++ b/src/interface/peer_server.rs
@@ -199,19 +199,17 @@ impl PeerServer {
let res = {
let noise = peer.current_noise().expect("current noise session");
noise.set_receiving_nonce(nonce).unwrap();
- noise.read_message(&packet[16..], &mut raw_packet)
- };
- let past_res = match res {
- Ok(len) => len,
- Err(_) => {
- if let Some(noise) = peer.past_noise() {
- noise.set_receiving_nonce(nonce).unwrap();
- noise.read_message(&packet[16..], &mut raw_packet)
- }
+ noise.read_message(&packet[16..], &mut raw_packet).map_err(|_| ())
+ }.or_else(|_| {
+ if let Some(noise) = peer.past_noise() {
+ noise.set_receiving_nonce(nonce).unwrap();
+ noise.read_message(&packet[16..], &mut raw_packet).map_err(|_| ())
+ } else {
+ Err(())
}
- };
+ });
- if let Ok(payload_len) = past_res {
+ if let Ok(payload_len) = res {
raw_packet.truncate(payload_len);
debug_packet("received TRANSPORT: ", &raw_packet);
self.handle.spawn(self.tunnel_tx.clone().send(raw_packet)