diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-07-24 10:39:37 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-07-24 15:05:05 +0000 |
| commit | 17af4d0db6eb48c6800819bb75767882672f8df5 (patch) | |
| tree | 2b0ba813356adda2bec8d319cb7bf10ba5c0778a | |
| parent | 39b2bc0a1cf1dfe29b5b32d1c84f348e5bb8a08e (diff) | |
| download | mullvadvpn-17af4d0db6eb48c6800819bb75767882672f8df5.tar.xz mullvadvpn-17af4d0db6eb48c6800819bb75767882672f8df5.zip | |
Throw exception if log setup fails
| -rw-r--r-- | mullvad-jni/src/lib.rs | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs index 309232774e..48017a8534 100644 --- a/mullvad-jni/src/lib.rs +++ b/mullvad-jni/src/lib.rs @@ -82,11 +82,17 @@ pub enum Error { #[error(display = "Failed to get cache directory path")] GetCacheDir(#[error(cause)] mullvad_paths::Error), + #[error(display = "Failed to get log directory path")] + GetLogDir(#[error(cause)] mullvad_paths::Error), + #[error(display = "Failed to initialize the mullvad daemon")] InitializeDaemon(#[error(cause)] mullvad_daemon::Error), #[error(display = "Failed to spawn the JNI event listener")] SpawnJniEventListener(#[error(cause)] jni_event_listener::Error), + + #[error(display = "Failed to start logger")] + StartLogging(#[error(cause)] logging::Error), } #[no_mangle] @@ -96,24 +102,30 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_MullvadDaemon_initialize( this: JObject, vpnService: JObject, ) { - let log_dir = start_logging(); - - load_classes(&env); + match start_logging() { + Ok(log_dir) => { + load_classes(&env); - if let Err(error) = initialize(&env, &this, &vpnService, log_dir) { - log::error!("{}", error.display_chain()); + if let Err(error) = initialize(&env, &this, &vpnService, log_dir) { + log::error!("{}", error.display_chain()); + } + } + Err(error) => env + .throw(error.display_chain()) + .expect("Failed to throw exception"), } } -fn start_logging() -> PathBuf { - let log_dir = mullvad_paths::log_dir().unwrap(); +fn start_logging() -> Result<PathBuf, Error> { + let log_dir = mullvad_paths::log_dir().map_err(Error::GetLogDir)?; let log_file = log_dir.join(LOG_FILENAME); - logging::init_logger(log::LevelFilter::Debug, Some(&log_file), true).unwrap(); + logging::init_logger(log::LevelFilter::Debug, Some(&log_file), true) + .map_err(Error::StartLogging)?; log_panics::init(); version::log_version(); - log_dir + Ok(log_dir) } fn load_classes(env: &JNIEnv) { |
