diff options
| author | Emīls <emils@mullvad.net> | 2020-08-19 14:00:17 +0100 |
|---|---|---|
| committer | David Lönnhager <david.l@mullvad.net> | 2020-08-20 14:41:42 +0200 |
| commit | cd7ecf8ff1adb0709049e903c4eacd4e658c1c31 (patch) | |
| tree | c5a1a779e614d399717f3fe3f8062c8205e8ab44 /mullvad-daemon/src | |
| parent | 5ff7f8909b8f478eb989c2f8a544d8cd76a636d6 (diff) | |
| download | mullvadvpn-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.rs | 42 |
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 }, |
