diff options
| author | Markus Pettersson <markus.pettersson@mullvad.net> | 2024-06-20 14:16:06 +0200 |
|---|---|---|
| committer | Markus Pettersson <markus.pettersson@mullvad.net> | 2024-06-20 14:16:06 +0200 |
| commit | 1031eebe433f3b928bff5df77c4cb4d1c04b8a6a (patch) | |
| tree | 19cccc1f2add8354813da929f63eaa46444240f4 /gui | |
| parent | 397d094c516802e39a34282bf58a1121b85bcace (diff) | |
| parent | 751026be2029636e491b6c8d22b979a33fa7cec1 (diff) | |
| download | mullvadvpn-1031eebe433f3b928bff5df77c4cb4d1c04b8a6a.tar.xz mullvadvpn-1031eebe433f3b928bff5df77c4cb4d1c04b8a6a.zip | |
Merge branch 'failed-to-enable-split-tunneling-on-macos-145-intel-des-1034'
Diffstat (limited to 'gui')
| -rw-r--r-- | gui/src/main/daemon-rpc.ts | 4 | ||||
| -rw-r--r-- | gui/src/main/index.ts | 6 | ||||
| -rw-r--r-- | gui/src/main/tunnel-state.ts | 13 |
3 files changed, 21 insertions, 2 deletions
diff --git a/gui/src/main/daemon-rpc.ts b/gui/src/main/daemon-rpc.ts index e8f8d96e18..3461a85ac5 100644 --- a/gui/src/main/daemon-rpc.ts +++ b/gui/src/main/daemon-rpc.ts @@ -568,6 +568,10 @@ export class DaemonRpc { await this.callEmpty(this.client.updateDevice); } + public async prepareRestart(quit: boolean) { + await this.callBool(this.client.prepareRestartV2, quit); + } + public async setDaitaSettings(daitaSettings: IDaitaSettings): Promise<void> { const grpcDaitaSettings = new grpcTypes.DaitaSettings(); grpcDaitaSettings.setEnabled(daitaSettings.enabled); diff --git a/gui/src/main/index.ts b/gui/src/main/index.ts index ded7ea6ede..b96bc07f12 100644 --- a/gui/src/main/index.ts +++ b/gui/src/main/index.ts @@ -321,7 +321,11 @@ class ApplicationMain } }; - private onBeforeQuit = (event: Electron.Event) => { + private onBeforeQuit = async (event: Electron.Event) => { + if (this.tunnelState.hasReceivedFullDiskAccessError) { + await this.daemonRpc.prepareRestart(true); + } + log.info('before-quit received'); if (this.quitInitiated) { event.preventDefault(); diff --git a/gui/src/main/tunnel-state.ts b/gui/src/main/tunnel-state.ts index 6829118818..297a7e481e 100644 --- a/gui/src/main/tunnel-state.ts +++ b/gui/src/main/tunnel-state.ts @@ -1,5 +1,5 @@ import { connectEnabled, disconnectEnabled, reconnectEnabled } from '../shared/connect-helper'; -import { ILocation, TunnelState } from '../shared/daemon-rpc-types'; +import { ErrorStateCause, ILocation, TunnelState } from '../shared/daemon-rpc-types'; import { Scheduler } from '../shared/scheduler'; export interface TunnelStateProvider { @@ -20,10 +20,15 @@ export default class TunnelStateHandler { // Scheduler for discarding the assumed next state. private tunnelStateFallbackScheduler = new Scheduler(); + private receivedFullDiskAccessError = false; + private lastKnownDisconnectedLocation: Partial<ILocation> | undefined; public constructor(private delegate: TunnelStateHandlerDelegate) {} + public get hasReceivedFullDiskAccessError() { + return this.receivedFullDiskAccessError; + } public get tunnelState() { return this.tunnelStateValue; } @@ -53,6 +58,12 @@ export default class TunnelStateHandler { } public handleNewTunnelState(newState: TunnelState) { + if (newState.state === 'error' && newState.details) { + if (newState.details.cause === ErrorStateCause.needFullDiskPermissions) { + this.receivedFullDiskAccessError = true; + } + } + // If there's a fallback state set then the app is in an assumed next state and need to check // if it's now reached or if the current state should be ignored and set as the fallback state. if (this.tunnelStateFallback) { |
