summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-24 14:28:01 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-07-24 15:05:53 +0000
commitf2d607d2575001eb0415caa005707f7576b40242 (patch)
tree836a79081d282f23e4e11800a253b0dadfd11360
parent0f8c5da08e5054558cd853c28bad995a4a91cfc9 (diff)
downloadmullvadvpn-f2d607d2575001eb0415caa005707f7576b40242.tar.xz
mullvadvpn-f2d607d2575001eb0415caa005707f7576b40242.zip
Only load classes once
-rw-r--r--mullvad-jni/src/lib.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index 3feb157745..284bea94d6 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -23,7 +23,7 @@ use parking_lot::RwLock;
use std::{
collections::HashMap,
path::{Path, PathBuf},
- sync::mpsc,
+ sync::{mpsc, Once},
thread,
};
use talpid_types::ErrorExt;
@@ -76,6 +76,8 @@ lazy_static! {
RwLock::new(HashMap::with_capacity(CLASSES_TO_LOAD.len()));
}
+static LOAD_CLASSES: Once = Once::new();
+
#[derive(Debug, err_derive::Error)]
pub enum Error {
#[error(display = "Failed to create VpnService tunnel provider")]
@@ -106,7 +108,7 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_MullvadDaemon_initialize(
) {
match *LOG_INIT_RESULT {
Ok(ref log_dir) => {
- load_classes(&env);
+ LOAD_CLASSES.call_once(|| load_classes(&env));
if let Err(error) = initialize(&env, &this, &vpnService, log_dir.clone()) {
log::error!("{}", error.display_chain());