summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mullvad-daemon/src/relays.rs16
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) => {