summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-24 10:39:37 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-24 15:05:05 +0000
commit17af4d0db6eb48c6800819bb75767882672f8df5 (patch)
tree2b0ba813356adda2bec8d319cb7bf10ba5c0778a
parent39b2bc0a1cf1dfe29b5b32d1c84f348e5bb8a08e (diff)
downloadmullvadvpn-17af4d0db6eb48c6800819bb75767882672f8df5.tar.xz
mullvadvpn-17af4d0db6eb48c6800819bb75767882672f8df5.zip
Throw exception if log setup fails
-rw-r--r--mullvad-jni/src/lib.rs30
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) {