summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLinus Färnstrand <linus@mullvad.net>2019-04-11 16:23:38 +0200
committerLinus Färnstrand <linus@mullvad.net>2019-04-12 12:07:56 +0200
commit466edee473356d5709a01f6e26fc8236967395c5 (patch)
treeea5a7e6d89a92f5620aa51841b6327e88843d386
parent11c3d35d7bef50416087555b8322057972fd1f28 (diff)
downloadmullvadvpn-466edee473356d5709a01f6e26fc8236967395c5.tar.xz
mullvadvpn-466edee473356d5709a01f6e26fc8236967395c5.zip
Get rid of last remains of error-chain in mullvad-daemon
-rw-r--r--Cargo.lock1
-rw-r--r--mullvad-daemon/Cargo.toml1
-rw-r--r--mullvad-daemon/src/lib.rs9
-rw-r--r--mullvad-daemon/src/main.rs73
-rw-r--r--mullvad-daemon/src/management_interface.rs2
5 files changed, 30 insertions, 56 deletions
diff --git a/Cargo.lock b/Cargo.lock
index 3cfe9cbc90..615b812eac 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1086,7 +1086,6 @@ dependencies = [
"clap 2.32.0 (registry+https://github.com/rust-lang/crates.io-index)",
"ctrlc 3.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"err-derive 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
- "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
"fern 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)",
"ipnetwork 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)",
diff --git a/mullvad-daemon/Cargo.toml b/mullvad-daemon/Cargo.toml
index 5d252c1217..b50b97d96a 100644
--- a/mullvad-daemon/Cargo.toml
+++ b/mullvad-daemon/Cargo.toml
@@ -16,7 +16,6 @@ edition = "2018"
[dependencies]
chrono = { version = "0.4", features = ["serde"] }
clap = "2.25"
-error-chain = "0.12"
err-derive = "0.1.5"
fern = { version = "0.5", features = ["colored"] }
futures = "0.1"
diff --git a/mullvad-daemon/src/lib.rs b/mullvad-daemon/src/lib.rs
index 2e998a9245..aab7f406f7 100644
--- a/mullvad-daemon/src/lib.rs
+++ b/mullvad-daemon/src/lib.rs
@@ -9,8 +9,6 @@
#![deny(rust_2018_idioms)]
#[macro_use]
-extern crate error_chain;
-#[macro_use]
extern crate serde;
@@ -193,10 +191,9 @@ impl Daemon {
cache_dir: PathBuf,
version: String,
) -> Result<Self> {
- ensure!(
- !rpc_uniqueness_check::is_another_instance_running(),
- Error::DaemonIsAlreadyRunning
- );
+ if rpc_uniqueness_check::is_another_instance_running() {
+ return Err(Error::DaemonIsAlreadyRunning);
+ }
let ca_path = resource_dir.join(mullvad_paths::resources::API_CA_FILENAME);
let mut rpc_manager = mullvad_rpc::MullvadRpcFactory::with_cache_dir(&cache_dir, &ca_path);
diff --git a/mullvad-daemon/src/main.rs b/mullvad-daemon/src/main.rs
index 8f996032c6..71cd61ff31 100644
--- a/mullvad-daemon/src/main.rs
+++ b/mullvad-daemon/src/main.rs
@@ -8,14 +8,10 @@
#![deny(rust_2018_idioms)]
-#[macro_use]
-extern crate error_chain;
-
-
-use error_chain::ChainedError;
use log::{debug, error, info, warn};
use mullvad_daemon::Daemon;
-use std::{thread, time::Duration};
+use std::{path::PathBuf, thread, time::Duration};
+use talpid_types::ErrorExt;
mod cli;
mod logging;
@@ -26,40 +22,28 @@ mod version;
const DAEMON_LOG_FILENAME: &str = "daemon.log";
-error_chain! {
- errors {
- LogError(msg: &'static str) {
- description("Error setting up log")
- display("Error setting up log: {}", msg)
- }
- }
- foreign_links {
- DaemonError(mullvad_daemon::Error);
- }
-}
-
fn main() {
- let exit_code = match run() {
+ let config = cli::get_config();
+ let log_dir = init_logging(&config).unwrap_or_else(|error| {
+ eprintln!("{}", error);
+ std::process::exit(1)
+ });
+ let exit_code = match run_platform(&config, log_dir) {
Ok(_) => 0,
Err(error) => {
- if let ErrorKind::LogError(_) = error.kind() {
- eprintln!("{}", error.display_chain());
- } else {
- error!("{}", error.display_chain());
- }
+ error!("{}", error);
1
}
};
debug!("Process exiting with code {}", exit_code);
- ::std::process::exit(exit_code);
+ std::process::exit(exit_code);
}
-fn run() -> Result<()> {
- let config = cli::get_config();
+fn init_logging(config: &cli::Config) -> Result<Option<PathBuf>, String> {
let log_dir = if config.log_to_file {
Some(
mullvad_paths::log_dir()
- .chain_err(|| ErrorKind::LogError("Unable to get log directory"))?,
+ .map_err(|e| e.display_chain_with_msg("Unable to get log directory"))?,
)
} else {
None
@@ -71,18 +55,17 @@ fn run() -> Result<()> {
log_file.as_ref(),
config.log_stdout_timestamps,
)
- .chain_err(|| ErrorKind::LogError("Unable to initialize logger"))?;
+ .map_err(|e| e.display_chain_with_msg("Unable to initialize logger"))?;
log_panics::init();
log_version();
if let Some(ref log_dir) = log_dir {
info!("Logging to {}", log_dir.display());
}
-
- run_platform(&config)
+ Ok(log_dir)
}
#[cfg(windows)]
-fn run_platform(config: &cli::Config) -> Result<()> {
+fn run_platform(config: &cli::Config, log_dir: Option<PathBuf>) -> Result<(), String> {
if config.run_as_service {
system_service::run()
} else {
@@ -94,42 +77,38 @@ fn run_platform(config: &cli::Config) -> Result<()> {
}
install_result
} else {
- run_standalone(config)
+ run_standalone(log_dir)
}
}
}
#[cfg(not(windows))]
-fn run_platform(config: &cli::Config) -> Result<()> {
- run_standalone(config)
+fn run_platform(_config: &cli::Config, log_dir: Option<PathBuf>) -> Result<(), String> {
+ run_standalone(log_dir)
}
-fn run_standalone(config: &cli::Config) -> Result<()> {
+fn run_standalone(log_dir: Option<PathBuf>) -> Result<(), String> {
if !running_as_admin() {
warn!("Running daemon as a non-administrator user, clients might refuse to connect");
}
- let daemon = create_daemon(config)?;
+ let daemon = create_daemon(log_dir)?;
let shutdown_handle = daemon.shutdown_handle();
shutdown::set_shutdown_signal_handler(move || shutdown_handle.shutdown())
- .chain_err(|| "Unable to attach shutdown signal handler")?;
+ .map_err(|e| e.display_chain())?;
- daemon.run()?;
+ daemon.run().map_err(|e| e.display_chain())?;
info!("Mullvad daemon is quitting");
thread::sleep(Duration::from_millis(500));
Ok(())
}
-fn create_daemon(config: &cli::Config) -> Result<Daemon> {
- let log_dir = if config.log_to_file {
- Some(mullvad_paths::log_dir().chain_err(|| "Unable to get log directory")?)
- } else {
- None
- };
+fn create_daemon(log_dir: Option<PathBuf>) -> Result<Daemon, String> {
let resource_dir = mullvad_paths::get_resource_dir();
- let cache_dir = mullvad_paths::cache_dir().chain_err(|| "Unable to get cache dir")?;
+ let cache_dir = mullvad_paths::cache_dir()
+ .map_err(|e| e.display_chain_with_msg("Unable to get cache dir"))?;
Daemon::start(
log_dir,
@@ -137,7 +116,7 @@ fn create_daemon(config: &cli::Config) -> Result<Daemon> {
cache_dir,
version::PRODUCT_VERSION.to_owned(),
)
- .chain_err(|| "Unable to initialize daemon")
+ .map_err(|e| e.display_chain_with_msg("Unable to initialize daemon"))
}
fn log_version() {
diff --git a/mullvad-daemon/src/management_interface.rs b/mullvad-daemon/src/management_interface.rs
index 24bf2df391..cb313ed653 100644
--- a/mullvad-daemon/src/management_interface.rs
+++ b/mullvad-daemon/src/management_interface.rs
@@ -1,4 +1,3 @@
-use error_chain::ChainedError;
use jsonrpc_core::{
futures::{
future,
@@ -30,6 +29,7 @@ use talpid_ipc;
use talpid_types::{
net::{openvpn, wireguard},
tunnel::TunnelStateTransition,
+ ErrorExt,
};
use uuid;