From 4df686f49e50eebc0978f06cf33538bb270fb3c4 Mon Sep 17 00:00:00 2001
From: Miroslav Prasil <miroslav@prasil.info>
Date: Mon, 18 Feb 2019 10:48:48 +0000
Subject: [PATCH] Add an option to not enable WAL (should help in #399)

---
 src/config.rs |  3 +++
 src/main.rs   | 12 +++++++-----
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/src/config.rs b/src/config.rs
index f49e8cc6..dd3377db 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -253,6 +253,9 @@ make_config! {
         extended_logging:       bool,   false,  def,    true;
         /// Log file path
         log_file:               String, false,  option;
+
+        /// Enable DB WAL |> Turning this off might lead to worse performance, but might help if using bitwarden_rs on some exotic filesystems, that do not support WAL
+        enable_db_wal:          bool,   false,  def,    true;
     },
 
     /// Yubikey settings
diff --git a/src/main.rs b/src/main.rs
index 45c1fbe7..db6488ff 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -168,11 +168,13 @@ fn check_db() {
     }
 
     // Turn on WAL in SQLite
-    use diesel::RunQueryDsl;
-    let connection = db::get_connection().expect("Can't conect to DB");
-    diesel::sql_query("PRAGMA journal_mode=wal")
-        .execute(&connection)
-        .expect("Failed to turn on WAL");
+    if CONFIG.enable_db_wal() {
+        use diesel::RunQueryDsl;
+        let connection = db::get_connection().expect("Can't conect to DB");
+        diesel::sql_query("PRAGMA journal_mode=wal")
+            .execute(&connection)
+            .expect("Failed to turn on WAL");
+    }
 }
 
 fn check_rsa_keys() {
-- 
GitLab