diff options
Diffstat (limited to 'src/wireguard/wireguard.rs')
-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 |