summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2025-08-15 13:08:14 +0200
committerDavid Lönnhager <david.l@mullvad.net>2025-08-18 18:12:03 +0200
commitb3fad76ec95243d0898efc1e8ed68d5f466b3448 (patch)
treef03cbd65a7be7757bb5ab33af96755e297419609
parentb0807e3ab9e423eb38a3b21ead3cca5b72a0ce1d (diff)
downloadmullvadvpn-b3fad76ec95243d0898efc1e8ed68d5f466b3448.tar.xz
mullvadvpn-b3fad76ec95243d0898efc1e8ed68d5f466b3448.zip
Set clamped MTU for obfuscation
-rw-r--r--talpid-wireguard/src/lib.rs15
1 files changed, 9 insertions, 6 deletions
diff --git a/talpid-wireguard/src/lib.rs b/talpid-wireguard/src/lib.rs
index 632bcd38b0..dc6964385a 100644
--- a/talpid-wireguard/src/lib.rs
+++ b/talpid-wireguard/src/lib.rs
@@ -168,6 +168,10 @@ impl WireguardMonitor {
let endpoint_addrs = [params.get_next_hop_endpoint().address.ip()];
let (close_obfs_sender, close_obfs_listener) = sync_mpsc::channel();
+ // Adjust MTU unless overridden by user
+ if params.options.mtu.is_none() {
+ config.mtu = clamp_mtu(params, config.mtu);
+ }
// Start obfuscation server and patch the WireGuard config to point the endpoint to it.
let obfuscation_mtu = config.mtu;
let obfuscator = args
@@ -177,12 +181,11 @@ impl WireguardMonitor {
obfuscation_mtu,
close_obfs_sender.clone(),
))?;
- // Don't adjust MTU if overridden by user
- if params.options.mtu.is_none() {
- if let Some(obfuscator) = obfuscator.as_ref() {
- config.mtu = config.mtu.saturating_sub(obfuscator.packet_overhead());
- }
- config.mtu = clamp_mtu(params, config.mtu);
+ // Adjust MTU again for obfuscation packet overhead
+ if params.options.mtu.is_none()
+ && let Some(obfuscator) = obfuscator.as_ref()
+ {
+ config.mtu = config.mtu.saturating_sub(obfuscator.packet_overhead());
}
// NOTE: We force userspace WireGuard while boringtun is enabled to more easily test