diff options
| author | Emīls Piņķis <emils@mullvad.net> | 2022-10-07 09:51:19 +0200 |
|---|---|---|
| committer | Emīls Piņķis <emils@mullvad.net> | 2022-10-10 09:30:49 +0200 |
| commit | e574d26da1d786b0f74cbacc194d1fd45b3ca089 (patch) | |
| tree | 2847b892f121fddb0088a1a524941b657745a42c | |
| parent | d5d97969cfc391a491c6aeb5c5826a95dcfa197a (diff) | |
| download | mullvadvpn-e574d26da1d786b0f74cbacc194d1fd45b3ca089.tar.xz mullvadvpn-e574d26da1d786b0f74cbacc194d1fd45b3ca089.zip | |
Disable logging for early boot blocker
| -rw-r--r-- | CHANGELOG.md | 3 | ||||
| -rw-r--r-- | mullvad-daemon/src/main.rs | 38 |
2 files changed, 24 insertions, 17 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index a51712bdca..7a171198ea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,9 @@ Line wrap the file at 100 chars. Th #### macOS - Fix fish shell completions when installed via Homebrew on Apple Silicon Macs. +#### Linux +- Don't prevent early boot service from running if logging to a file fails. + ## [2022.5-beta2] - 2022-10-05 ### Added diff --git a/mullvad-daemon/src/main.rs b/mullvad-daemon/src/main.rs index 23946fbf1a..d47d6563da 100644 --- a/mullvad-daemon/src/main.rs +++ b/mullvad-daemon/src/main.rs @@ -48,28 +48,32 @@ fn main() { fn init_logging(config: &cli::Config) -> Result<Option<PathBuf>, String> { let log_dir = get_log_dir(config)?; + let log_path = |filename| log_dir.as_ref().map(|dir| dir.join(filename)); - #[cfg(not(target_os = "linux"))] - let log_file_name = DAEMON_LOG_FILENAME; + let initialize_logging = |log_file: Option<PathBuf>| -> Result<_, String> { + logging::init_logger( + config.log_level, + log_file.as_ref(), + config.log_stdout_timestamps, + ) + .map_err(|e| e.display_chain_with_msg("Unable to initialize logger"))?; + log_panics::init(); + exception_logging::enable(); + version::log_version(); + Ok(()) + }; #[cfg(target_os = "linux")] - let log_file_name = if config.initialize_firewall_and_exit { - EARLY_BOOT_LOG_FILENAME - } else { - DAEMON_LOG_FILENAME - }; + if config.initialize_firewall_and_exit { + if initialize_logging(log_path(EARLY_BOOT_LOG_FILENAME)).is_err() { + let _ = initialize_logging(None); + } + + return Ok(None); + } - let log_file = log_dir.as_ref().map(|dir| dir.join(log_file_name)); + initialize_logging(log_path(DAEMON_LOG_FILENAME))?; - logging::init_logger( - config.log_level, - log_file.as_ref(), - config.log_stdout_timestamps, - ) - .map_err(|e| e.display_chain_with_msg("Unable to initialize logger"))?; - log_panics::init(); - exception_logging::enable(); - version::log_version(); if let Some(ref log_dir) = log_dir { log::info!("Logging to {}", log_dir.display()); } |
