diff options
| -rw-r--r-- | mullvad-daemon/src/lib.rs | 13 | ||||
| -rw-r--r-- | mullvad-daemon/src/management_interface.rs | 6 | ||||
| -rw-r--r-- | mullvad-jni/src/daemon_interface.rs | 2 | ||||
| -rw-r--r-- | mullvad-management-interface/proto/management_interface.proto | 1 |
4 files changed, 11 insertions, 11 deletions
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs index d2aea87af8..487c5b1f49 100644 --- a/mullvad-daemon/src/lib.rs +++ b/mullvad-daemon/src/lib.rs @@ -283,8 +283,6 @@ pub enum DaemonCommand { CheckVolumes(ResponseTx<(), Error>), /// Register settings for WireGuard obfuscator SetObfuscationSettings(ResponseTx<(), settings::Error>, ObfuscationSettings), - /// Makes the daemon exit the main loop and quit. - Shutdown, /// Saves the target tunnel state and enters a blocking state. The state is restored /// upon restart. PrepareRestart, @@ -431,6 +429,16 @@ impl DaemonCommandSender { .unbounded_send(InternalDaemonEvent::Command(command)) .map_err(|_| Error::DaemonUnavailable) } + + /// Shuts down the daemon. This triggers the shutdown as though the user would shut it down + /// because blocking traffic on Android relies on the daemon process being alive and keeping a + /// tunnel device open. + #[cfg(target_os = "android")] + pub fn shutdown(&self) -> Result<(), Error> { + self.0 + .unbounded_send(InternalDaemonEvent::TriggerShutdown(true)) + .map_err(|_| Error::DaemonUnavailable) + } } pub(crate) struct DaemonEventSender<E = InternalDaemonEvent> { @@ -1032,7 +1040,6 @@ where SetObfuscationSettings(tx, settings) => { self.on_set_obfuscation_settings(tx, settings).await } - Shutdown => self.trigger_shutdown_event(false), PrepareRestart => self.on_prepare_restart(), #[cfg(target_os = "android")] BypassSocket(fd, tx) => self.on_bypass_socket(fd, tx), diff --git a/mullvad-daemon/src/management_interface.rs b/mullvad-daemon/src/management_interface.rs index bac3ed0f93..ccaa22a624 100644 --- a/mullvad-daemon/src/management_interface.rs +++ b/mullvad-daemon/src/management_interface.rs @@ -111,12 +111,6 @@ impl ManagementService for ManagementServiceImpl { Ok(Response::new(())) } - async fn shutdown(&self, _: Request<()>) -> ServiceResult<()> { - log::debug!("shutdown"); - self.send_command_to_daemon(DaemonCommand::Shutdown)?; - Ok(Response::new(())) - } - async fn factory_reset(&self, _: Request<()>) -> ServiceResult<()> { #[cfg(not(target_os = "android"))] { diff --git a/mullvad-jni/src/daemon_interface.rs b/mullvad-jni/src/daemon_interface.rs index d23e7b8be4..a9406a5507 100644 --- a/mullvad-jni/src/daemon_interface.rs +++ b/mullvad-jni/src/daemon_interface.rs @@ -293,7 +293,7 @@ impl DaemonInterface { } pub fn shutdown(&self) -> Result<()> { - self.send_command(DaemonCommand::Shutdown) + self.command_sender.shutdown().map_err(Error::NoDaemon) } pub fn submit_voucher(&self, voucher: String) -> Result<VoucherSubmission> { diff --git a/mullvad-management-interface/proto/management_interface.proto b/mullvad-management-interface/proto/management_interface.proto index 8ec2bdf529..5789728fce 100644 --- a/mullvad-management-interface/proto/management_interface.proto +++ b/mullvad-management-interface/proto/management_interface.proto @@ -18,7 +18,6 @@ service ManagementService { // Control the daemon and receive events rpc EventsListen(google.protobuf.Empty) returns (stream DaemonEvent) {} rpc PrepareRestart(google.protobuf.Empty) returns (google.protobuf.Empty) {} - rpc Shutdown(google.protobuf.Empty) returns (google.protobuf.Empty) {} rpc FactoryReset(google.protobuf.Empty) returns (google.protobuf.Empty) {} rpc GetCurrentVersion(google.protobuf.Empty) returns (google.protobuf.StringValue) {} |
