diff options
author | Jake McGinty <me@jake.su> | 2018-02-05 12:53:42 +0000 |
---|---|---|
committer | Jake McGinty <me@jake.su> | 2018-02-05 12:53:42 +0000 |
commit | 50d4095e3c63542c47b5f0077b10e012fc50a4fc (patch) | |
tree | 06ec85aeb01dffbf3188e786e4d4fc0e66053ee5 /src | |
parent | start removing some panics (diff) | |
download | wireguard-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.rs | 20 |
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) |