summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mullvad-daemon/src/lib.rs13
-rw-r--r--mullvad-daemon/src/management_interface.rs6
-rw-r--r--mullvad-jni/src/daemon_interface.rs2
-rw-r--r--mullvad-management-interface/proto/management_interface.proto1
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) {}