summaryrefslogtreecommitdiffhomepage
path: root/mullvad-daemon/src
diff options
context:
space:
mode:
authorEmīls <emils@mullvad.net>2020-08-19 14:00:17 +0100
committerDavid Lönnhager <david.l@mullvad.net>2020-08-20 14:41:42 +0200
commitcd7ecf8ff1adb0709049e903c4eacd4e658c1c31 (patch)
treec5a1a779e614d399717f3fe3f8062c8205e8ab44 /mullvad-daemon/src
parent5ff7f8909b8f478eb989c2f8a544d8cd76a636d6 (diff)
downloadmullvadvpn-cd7ecf8ff1adb0709049e903c4eacd4e658c1c31.tar.xz
mullvadvpn-cd7ecf8ff1adb0709049e903c4eacd4e658c1c31.zip
Specify blocking failure in error state
Diffstat (limited to 'mullvad-daemon/src')
-rw-r--r--mullvad-daemon/src/management_interface.rs42
1 files changed, 22 insertions, 20 deletions
diff --git a/mullvad-daemon/src/management_interface.rs b/mullvad-daemon/src/management_interface.rs
index 61df804d3e..c8ec8445d0 100644
--- a/mullvad-daemon/src/management_interface.rs
+++ b/mullvad-daemon/src/management_interface.rs
@@ -1335,6 +1335,26 @@ fn convert_state(state: TunnelState) -> types::TunnelState {
};
use TunnelState::*;
+ let map_firewall_error = |firewall_error: &FirewallPolicyError| match firewall_error {
+ FirewallPolicyError::Generic => ProtoFirewallPolicyError {
+ r#type: i32::from(PolicyErrorType::Generic),
+ ..Default::default()
+ },
+ #[cfg(windows)]
+ FirewallPolicyError::Locked(blocking_app) => {
+ let (lock_pid, lock_name) = match blocking_app {
+ Some(app) => (app.pid, app.name.clone()),
+ None => (0, "".to_string()),
+ };
+
+ ProtoFirewallPolicyError {
+ r#type: i32::from(PolicyErrorType::Locked),
+ lock_pid,
+ lock_name,
+ }
+ }
+ };
+
let state = match state {
Disconnected => ProtoState::Disconnected(tunnel_state::Disconnected {}),
Connecting { endpoint, location } => ProtoState::Connecting(tunnel_state::Connecting {
@@ -1380,7 +1400,7 @@ fn convert_state(state: TunnelState) -> types::TunnelState {
i32::from(ProtoErrorCause::VpnPermissionDenied)
}
},
- is_blocking: error_state.is_blocking(),
+ blocking_error: error_state.block_failure().map(map_firewall_error),
auth_fail_reason: if let ErrorStateCause::AuthFailed(reason) = error_state.cause() {
reason.clone().unwrap_or_default()
} else {
@@ -1409,25 +1429,7 @@ fn convert_state(state: TunnelState) -> types::TunnelState {
policy_error: if let ErrorStateCause::SetFirewallPolicyError(reason) =
error_state.cause()
{
- match reason {
- FirewallPolicyError::Generic => Some(ProtoFirewallPolicyError {
- r#type: i32::from(PolicyErrorType::Generic),
- ..Default::default()
- }),
- #[cfg(windows)]
- FirewallPolicyError::Locked(blocking_app) => {
- let (lock_pid, lock_name) = match blocking_app {
- Some(app) => (app.pid, app.name.clone()),
- None => (0, "".to_string()),
- };
-
- Some(ProtoFirewallPolicyError {
- r#type: i32::from(PolicyErrorType::Locked),
- lock_pid,
- lock_name,
- })
- }
- }
+ Some(map_firewall_error(reason))
} else {
None
},