diff options
author | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2019-11-18 12:04:20 +0100 |
---|---|---|
committer | Mathias Hall-Andersen <mathias@hall-andersen.dk> | 2019-11-18 12:04:20 +0100 |
commit | b1fbd7fbbaa92dde20d292307f4f4347e4c01450 (patch) | |
tree | 3ad79a99ff36568aa801121fad4b065cb819b1ea /src/wireguard/wireguard.rs | |
parent | Update configuration API (diff) | |
download | wireguard-rs-b1fbd7fbbaa92dde20d292307f4f4347e4c01450.tar.xz wireguard-rs-b1fbd7fbbaa92dde20d292307f4f4347e4c01450.zip |
Bug fixes from compliance tests with WireGuard
Diffstat (limited to '')
-rw-r--r-- | src/wireguard/wireguard.rs | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/wireguard/wireguard.rs b/src/wireguard/wireguard.rs index 613c0a8..00ee053 100644 --- a/src/wireguard/wireguard.rs +++ b/src/wireguard/wireguard.rs @@ -120,7 +120,7 @@ pub struct Wireguard<T: Tun, B: Bind> { const fn padding(size: usize, mtu: usize) -> usize { #[inline(always)] const fn min(a: usize, b: usize) -> usize { - let m = (a > b) as usize; + let m = (a < b) as usize; a * m + (1 - m) * b } let pad = MESSAGE_PADDING_MULTIPLE; @@ -491,11 +491,16 @@ impl<T: Tun, B: Bind> Wireguard<T, B> { debug!("TUN worker, IP packet of {} bytes (MTU = {})", payload, mtu); // truncate padding - let payload = padding(payload, mtu); - msg.truncate(router::SIZE_MESSAGE_PREFIX + payload); - debug_assert!(payload <= mtu); + let padded = padding(payload, mtu); + log::trace!( + "TUN worker, payload length = {}, padded length = {}", + payload, + padded + ); + msg.truncate(router::SIZE_MESSAGE_PREFIX + padded); + debug_assert!(padded <= mtu); debug_assert_eq!( - if payload < mtu { + if padded < mtu { (msg.len() - router::SIZE_MESSAGE_PREFIX) % MESSAGE_PADDING_MULTIPLE } else { 0 |