summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2018-09-07 16:14:07 +0200
committerLinus Färnstrand <linus@mullvad.net>2018-09-07 16:14:07 +0200
commitda1ef31eccbd207079a4757b64275574a0cb5341 (patch)
tree3266a308f8853ec30d8919f2fc8546715240d1f8
parentad640c6314f839f14083786dea5c158fb388195f (diff)
downloadmullvadvpn-da1ef31eccbd207079a4757b64275574a0cb5341.tar.xz
mullvadvpn-da1ef31eccbd207079a4757b64275574a0cb5341.zip
Make trying to connect without account token not block, just disconnect
-rw-r--r--mullvad-daemon/src/main.rs51
-rw-r--r--talpid-types/src/tunnel.rs3
2 files changed, 26 insertions, 28 deletions
diff --git a/mullvad-daemon/src/main.rs b/mullvad-daemon/src/main.rs
index 971c34276e..df8aac4bfd 100644
--- a/mullvad-daemon/src/main.rs
+++ b/mullvad-daemon/src/main.rs
@@ -597,35 +597,34 @@ impl Daemon {
debug!("Target state {:?} => {:?}", self.target_state, new_state);
self.target_state = new_state;
match self.target_state {
- TargetState::Secured => self.connect_tunnel(),
+ TargetState::Secured => match self.settings.get_account_token() {
+ Some(account_token) => self.connect_tunnel(account_token),
+ None => self.set_target_state(TargetState::Unsecured),
+ },
TargetState::Unsecured => self.disconnect_tunnel(),
}
}
}
- fn connect_tunnel(&mut self) {
- let allow_lan = self.settings.get_allow_lan();
- let command = match self.settings.get_account_token() {
- None => TunnelCommand::Block(BlockReason::NoAccountToken, allow_lan),
- Some(account_token) => match self.settings.get_relay_settings() {
- RelaySettings::CustomTunnelEndpoint(custom_relay) => custom_relay
- .to_tunnel_endpoint()
- .chain_err(|| "Custom tunnel endpoint could not be resolved"),
- RelaySettings::Normal(constraints) => self
- .relay_selector
- .get_tunnel_endpoint(&constraints)
- .chain_err(|| "No valid relay servers match the current settings")
- .map(|(relay, endpoint)| {
- self.current_relay = Some(relay);
- endpoint
- }),
- }.map(|endpoint| self.build_tunnel_parameters(account_token, endpoint))
- .map(|parameters| TunnelCommand::Connect(parameters))
- .unwrap_or_else(|error| {
- error!("{}", error.display_chain());
- TunnelCommand::Block(BlockReason::NoMatchingRelay, allow_lan)
- }),
- };
+ fn connect_tunnel(&mut self, account_token: AccountToken) {
+ let command = match self.settings.get_relay_settings() {
+ RelaySettings::CustomTunnelEndpoint(custom_relay) => custom_relay
+ .to_tunnel_endpoint()
+ .chain_err(|| "Custom tunnel endpoint could not be resolved"),
+ RelaySettings::Normal(constraints) => self
+ .relay_selector
+ .get_tunnel_endpoint(&constraints)
+ .chain_err(|| "No valid relay servers match the current settings")
+ .map(|(relay, endpoint)| {
+ self.current_relay = Some(relay);
+ endpoint
+ }),
+ }.map(|endpoint| self.build_tunnel_parameters(account_token, endpoint))
+ .map(|parameters| TunnelCommand::Connect(parameters))
+ .unwrap_or_else(|error| {
+ error!("{}", error.display_chain());
+ TunnelCommand::Block(BlockReason::NoMatchingRelay, self.settings.get_allow_lan())
+ });
self.send_tunnel_command(command);
}
@@ -635,7 +634,9 @@ impl Daemon {
fn reconnect_tunnel(&mut self) {
if self.target_state == TargetState::Secured {
- self.connect_tunnel()
+ if let Some(account_token) = self.settings.get_account_token() {
+ self.connect_tunnel(account_token);
+ }
}
}
diff --git a/talpid-types/src/tunnel.rs b/talpid-types/src/tunnel.rs
index 324ad4e7d4..1819919d5a 100644
--- a/talpid-types/src/tunnel.rs
+++ b/talpid-types/src/tunnel.rs
@@ -29,8 +29,6 @@ pub enum BlockReason {
StartTunnelError,
/// No relay server matching the current filter parameters.
NoMatchingRelay,
- /// No account token configured.
- NoAccountToken,
}
impl fmt::Display for BlockReason {
@@ -42,7 +40,6 @@ impl fmt::Display for BlockReason {
BlockReason::SetSecurityPolicyError => "Failed to set security policy",
BlockReason::StartTunnelError => "Failed to start connection to remote server",
BlockReason::NoMatchingRelay => "No relay server matches the current settings",
- BlockReason::NoAccountToken => "No account token configured",
};
write!(formatter, "{}", description)