summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDavid Lönnhager <david.l@mullvad.net>2021-04-27 15:48:22 +0200
committerDavid Lönnhager <david.l@mullvad.net>2021-05-17 11:08:50 +0200
commit4b18d7786181bd230052c2d4141771e75c4b3619 (patch)
tree267e279d7fdd0e98a913e70fab53765090d9e4db
parentd478193d76099077cdc4afd3bda5e48ecc6f1a1b (diff)
downloadmullvadvpn-4b18d7786181bd230052c2d4141771e75c4b3619.tar.xz
mullvadvpn-4b18d7786181bd230052c2d4141771e75c4b3619.zip
Fail if no matching entry relay is found
-rw-r--r--mullvad-daemon/src/lib.rs26
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());