diff options
| -rw-r--r-- | talpid-wireguard/src/lib.rs | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/talpid-wireguard/src/lib.rs b/talpid-wireguard/src/lib.rs index 63ee636d6f..330f6f9c07 100644 --- a/talpid-wireguard/src/lib.rs +++ b/talpid-wireguard/src/lib.rs @@ -183,10 +183,13 @@ impl WireguardMonitor { &mut config, close_obfs_sender.clone(), ))?; - if let Some(obfuscator) = obfuscator.as_ref() { - config.mtu = config.mtu.saturating_sub(obfuscator.packet_overhead()); + // 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); } - config.mtu = clamp_mtu(params, config.mtu); let endpoint_addrs: Vec<IpAddr> = config.peers().map(|peer| peer.endpoint.ip()).collect(); @@ -405,10 +408,13 @@ impl WireguardMonitor { close_obfs_sender.clone(), args.tun_provider.clone(), ))?; - if let Some(obfuscator) = obfuscator.as_ref() { - config.mtu = config.mtu.saturating_sub(obfuscator.packet_overhead()); + // 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); } - config.mtu = clamp_mtu(params, config.mtu); let should_negotiate_ephemeral_peer = config.quantum_resistant || config.daita; let tunnel = Self::open_tunnel( |
