summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md3
-rw-r--r--mullvad-daemon/src/main.rs38
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());
}