diff options
| -rw-r--r-- | mullvad-daemon/src/lib.rs | 9 | ||||
| -rw-r--r-- | mullvad-jni/src/lib.rs | 12 |
2 files changed, 11 insertions, 10 deletions
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs index 97493fb08b..595320840c 100644 --- a/mullvad-daemon/src/lib.rs +++ b/mullvad-daemon/src/lib.rs @@ -426,10 +426,11 @@ where resource_dir: PathBuf, cache_dir: PathBuf, #[cfg(target_os = "android")] android_context: AndroidContext, - ) -> Result<Self, Error> { + ) -> Result<(Self, DaemonCommandSender), Error> { let (tx, rx) = futures::sync::mpsc::unbounded(); + let command_sender = DaemonCommandSender::new(tx.clone()); - Self::start_internal( + let daemon = Self::start_internal( tx, rx, event_listener, @@ -438,7 +439,9 @@ where cache_dir, #[cfg(target_os = "android")] android_context, - ) + )?; + + Ok((daemon, command_sender)) } fn start_internal( diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index 3be27632b4..30b443b434 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -167,8 +167,8 @@ fn spawn_daemon( let jvm = android_context.jvm.clone(); match create_daemon(listener, log_dir, android_context) { - Ok(daemon) => { - let _ = tx.send(Ok(daemon.command_sender())); + Ok((daemon, command_sender)) => { + let _ = tx.send(Ok(command_sender)); match daemon.run() { Ok(()) => log::info!("Mullvad daemon has stopped"), Err(error) => log::error!("{}", error.display_chain()), @@ -189,20 +189,18 @@ fn create_daemon( listener: JniEventListener, log_dir: PathBuf, android_context: AndroidContext, -) -> Result<Daemon<JniEventListener>, Error> { +) -> Result<(Daemon<JniEventListener>, DaemonCommandSender), Error> { let resource_dir = mullvad_paths::get_resource_dir(); let cache_dir = mullvad_paths::cache_dir().map_err(Error::GetCacheDir)?; - let daemon = Daemon::start_with_event_listener( + Daemon::start_with_event_listener( listener, Some(log_dir), resource_dir, cache_dir, android_context, ) - .map_err(Error::InitializeDaemon)?; - - Ok(daemon) + .map_err(Error::InitializeDaemon) } fn notify_daemon_stopped(jvm: Arc<JavaVM>, daemon_object: GlobalRef) { |
