diff options
| -rw-r--r-- | mullvad-daemon/src/relays.rs | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/mullvad-daemon/src/relays.rs b/mullvad-daemon/src/relays.rs index 3c22cde3cf..f81110badb 100644 --- a/mullvad-daemon/src/relays.rs +++ b/mullvad-daemon/src/relays.rs @@ -281,13 +281,17 @@ impl RelaySelector { relay_constraints.tunnel_protocol = Constraint::Only(preferred_tunnel); } Constraint::Only(TunnelProtocol::OpenVpn) => { - relay_constraints.openvpn_constraints = original_constraints.openvpn_constraints; - if *bridge_state == BridgeState::On - && relay_constraints.openvpn_constraints.protocol.is_any() - { + let openvpn_constraints = &mut relay_constraints.openvpn_constraints; + *openvpn_constraints = original_constraints.openvpn_constraints; + if *bridge_state == BridgeState::On && openvpn_constraints.protocol.is_any() { // FIXME: This is temporary while talpid-core only supports TCP proxies - relay_constraints.openvpn_constraints.protocol = - Constraint::Only(TransportProtocol::Tcp); + openvpn_constraints.protocol = Constraint::Only(TransportProtocol::Tcp); + } else if openvpn_constraints.port.is_any() && openvpn_constraints.protocol.is_any() + { + let (preferred_port, preferred_protocol) = + Self::preferred_openvpn_constraints(retry_attempt); + openvpn_constraints.port = preferred_port; + openvpn_constraints.protocol = Constraint::Only(preferred_protocol); } } Constraint::Only(TunnelProtocol::Wireguard) => { |
