summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2018-06-28 08:45:06 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2018-07-02 10:02:18 -0300
commiteb1b3669d518dbf7f93a426bb609c6af90f22041 (patch)
treebcf028a8c2c116849df65d709e96ab14c8029081
parentb559a99f5d171bd4c271741dda675e6eb9baa5bc (diff)
downloadmullvadvpn-eb1b3669d518dbf7f93a426bb609c6af90f22041.tar.xz
mullvadvpn-eb1b3669d518dbf7f93a426bb609c6af90f22041.zip
Log errors returned by main `run` function
-rw-r--r--mullvad-daemon/src/main.rs29
1 files changed, 22 insertions, 7 deletions
diff --git a/mullvad-daemon/src/main.rs b/mullvad-daemon/src/main.rs
index 37bfcb56a9..d5e50f88b0 100644
--- a/mullvad-daemon/src/main.rs
+++ b/mullvad-daemon/src/main.rs
@@ -85,13 +85,13 @@ use talpid_types::net::{TunnelEndpoint, TunnelEndpointData, TunnelOptions};
error_chain!{
errors {
+ LogError(msg: &'static str) {
+ description("Error setting up log")
+ display("Error setting up log: {}", msg)
+ }
NoCacheDir {
description("Unable to create cache directory")
}
- #[cfg(windows)]
- NoLogDir {
- description("Unable to create log directory")
- }
DaemonIsAlreadyRunning {
description("Another instance of the daemon is already running")
}
@@ -834,12 +834,27 @@ impl Drop for Daemon {
}
-quick_main!(run);
+fn main() {
+ ::std::process::exit(match run() {
+ Ok(_) => 0,
+ Err(error) => {
+ if let &ErrorKind::LogError(_) = error.kind() {
+ eprintln!("{}", error.display_chain());
+ } else {
+ error!("{}", error.display_chain());
+ }
+ 1
+ }
+ });
+}
fn run() -> Result<()> {
let config = cli::get_config();
let log_dir = if config.log_to_file {
- Some(mullvad_paths::log_dir().chain_err(|| "Unable to get log directory")?)
+ Some(
+ mullvad_paths::log_dir()
+ .chain_err(|| ErrorKind::LogError("Unable to get log directory"))?,
+ )
} else {
None
};
@@ -849,7 +864,7 @@ fn run() -> Result<()> {
config.log_level,
log_file.as_ref(),
config.log_stdout_timestamps,
- ).chain_err(|| "Unable to initialize logger")?;
+ ).chain_err(|| ErrorKind::LogError("Unable to initialize logger"))?;
log_version();
if let Some(ref log_dir) = log_dir {
info!("Logging to {}", log_dir.display());