summaryrefslogtreecommitdiffhomepage
path: root/ios
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2025-05-02 16:42:56 +0200
committerDavid Lönnhager <david.l@mullvad.net>2025-05-02 16:42:56 +0200
commitd75791d60f333f002920af80bd0164089f377931 (patch)
tree5b545c3f80bb1116f5af3facd2b07174abbaa660 /ios
parentdc9b3f9292c31a1d90d68ab830fe9af41cd24ffa (diff)
parent60d2962541ddab1543033a4aea2b0ef51dd42f4f (diff)
downloadmullvadvpn-d75791d60f333f002920af80bd0164089f377931.tar.xz
mullvadvpn-d75791d60f333f002920af80bd0164089f377931.zip
Merge branch 'tunnel-obfuscation-add-quic'
Diffstat (limited to 'ios')
-rw-r--r--ios/MullvadRustRuntime/TunnelObfuscator.swift4
-rw-r--r--ios/MullvadRustRuntime/include/mullvad_rust_runtime.h1
-rw-r--r--ios/PacketTunnelCore/Actor/ProtocolObfuscator.swift10
3 files changed, 11 insertions, 4 deletions
diff --git a/ios/MullvadRustRuntime/TunnelObfuscator.swift b/ios/MullvadRustRuntime/TunnelObfuscator.swift
index 091a2e0e03..495930b222 100644
--- a/ios/MullvadRustRuntime/TunnelObfuscator.swift
+++ b/ios/MullvadRustRuntime/TunnelObfuscator.swift
@@ -14,6 +14,7 @@ import Network
public enum TunnelObfuscationProtocol {
case udpOverTcp
case shadowsocks
+ case quic
}
public protocol TunnelObfuscation {
@@ -53,6 +54,8 @@ public final class TunnelObfuscator: TunnelObfuscation {
.tcp
case .shadowsocks:
.udp
+ case .quic:
+ .udp
}
}
@@ -74,6 +77,7 @@ public final class TunnelObfuscator: TunnelObfuscation {
let obfuscationProtocol = switch obfuscationProtocol {
case .udpOverTcp: TunnelObfuscatorProtocol(0)
case .shadowsocks: TunnelObfuscatorProtocol(1)
+ case .quic: TunnelObfuscatorProtocol(2)
}
let result = withUnsafeMutablePointer(to: &proxyHandle) { proxyHandlePointer in
diff --git a/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h b/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h
index b4f4a65e2f..fa24141e42 100644
--- a/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h
+++ b/ios/MullvadRustRuntime/include/mullvad_rust_runtime.h
@@ -23,6 +23,7 @@ typedef uint8_t SwiftAccessMethodKind;
enum TunnelObfuscatorProtocol {
UdpOverTcp = 0,
Shadowsocks,
+ Quic,
};
typedef uint8_t TunnelObfuscatorProtocol;
diff --git a/ios/PacketTunnelCore/Actor/ProtocolObfuscator.swift b/ios/PacketTunnelCore/Actor/ProtocolObfuscator.swift
index 51070accf8..b6588d6de6 100644
--- a/ios/PacketTunnelCore/Actor/ProtocolObfuscator.swift
+++ b/ios/PacketTunnelCore/Actor/ProtocolObfuscator.swift
@@ -61,13 +61,15 @@ public class ProtocolObfuscator<Obfuscator: TunnelObfuscation>: ProtocolObfuscat
}
#if DEBUG
- // TODO: Revisit this when QUIC obfuscation is available to use, use shadowsocks over 443 for the time being
+ let obfuscationProtocol: TunnelObfuscationProtocol = switch obfuscationMethod {
+ case .shadowsocks: .shadowsocks
+ case .quic: .quic
+ default: .udpOverTcp
+ }
let obfuscator = Obfuscator(
remoteAddress: endpoint.ipv4Relay.ip,
tcpPort: remotePort,
- obfuscationProtocol: (obfuscationMethod == .shadowsocks || obfuscationMethod == .quic)
- ? .shadowsocks
- : .udpOverTcp
+ obfuscationProtocol: obfuscationProtocol
)
#else
// At this point, the only possible obfuscation methods should be either `.udpOverTcp` or `.shadowsocks`