diff options
| author | David Lönnhager <david.l@mullvad.net> | 2021-04-27 15:48:22 +0200 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2021-05-17 11:08:50 +0200 |
| commit | 4b18d7786181bd230052c2d4141771e75c4b3619 (patch) | |
| tree | 267e279d7fdd0e98a913e70fab53765090d9e4db | |
| parent | d478193d76099077cdc4afd3bda5e48ecc6f1a1b (diff) | |
| download | mullvadvpn-4b18d7786181bd230052c2d4141771e75c4b3619.tar.xz mullvadvpn-4b18d7786181bd230052c2d4141771e75c4b3619.zip | |
Fail if no matching entry relay is found
| -rw-r--r-- | mullvad-daemon/src/lib.rs | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs index 4744e83eb8..546f06647b 100644 --- a/mullvad-daemon/src/lib.rs +++ b/mullvad-daemon/src/lib.rs @@ -116,6 +116,9 @@ pub enum Error { #[error(display = "No bridge available")] NoBridgeAvailable, + #[error(display = "No matching entry relay was found")] + NoEntryRelayAvailable, + #[error(display = "No account token is set")] NoAccountToken, @@ -1063,13 +1066,22 @@ where ipv6_gateway, } => { let entry_peer = match self.settings.get_relay_settings() { - RelaySettings::Normal(ref relay_constraints) => self - .relay_selector - .get_tunnel_entry_endpoint(&peer, relay_constraints, retry_attempt) - .and_then(|(_relay, mullvad_endpoint)| match mullvad_endpoint { - MullvadEndpoint::Wireguard { peer, .. } => Some(peer), - _ => None, - }), + RelaySettings::Normal(ref relay_constraints) + if relay_constraints + .wireguard_constraints + .entry_location + .is_some() => + { + Some( + self.relay_selector + .get_tunnel_entry_endpoint(&peer, relay_constraints, retry_attempt) + .and_then(|(_relay, mullvad_endpoint)| match mullvad_endpoint { + MullvadEndpoint::Wireguard { peer, .. } => Some(peer), + _ => None, + }) + .ok_or(Error::NoEntryRelayAvailable)?, + ) + } _ => None, }; let exit_peer = entry_peer.as_ref().map(|_| peer.clone()); |
