diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/platform.rs | 2 | ||||
| -rw-r--r-- | src/platform/windows.rs | 14 |
2 files changed, 9 insertions, 7 deletions
diff --git a/src/platform.rs b/src/platform.rs index 3118966..076308c 100644 --- a/src/platform.rs +++ b/src/platform.rs @@ -33,7 +33,7 @@ pub mod linux; pub use linux::{bootstrap, run, local_time, send_to_raw, is_kernel_filtered_clienthello}; /// pause before exit on windows to print information in console before it is closed. -pub fn paexit(code: i32) { +pub fn paexit(code: i32) -> ! { #[cfg(windows)] pause(); std::process::exit(code); } diff --git a/src/platform/windows.rs b/src/platform/windows.rs index 8447d55..239449f 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -24,6 +24,7 @@ use windivert::{ use std::sync::{LazyLock, Mutex}; use std::thread; use crate::{opt, pkt}; +use super::paexit; pub fn pause() { println!("Press any key to exit..."); @@ -41,9 +42,8 @@ fn open_handle(filter: &str, flags: prelude::WinDivertFlags) -> WinDivert<Networ h }, Err(e) => { - crate::error!("windivert: {}", e); - crate::error!("windivert: {}", filter); - std::process::exit(1); + crate::error!("windivert: cannot open {filter}: {e}"); + paexit(1); } }; h @@ -128,10 +128,12 @@ pub fn run() -> Result<()> { } fn service_run() { + use std::process::exit; + if run().is_err() { - std::process::exit(1); + exit(1); } - std::process::exit(0); + exit(0); } fn service_main() { @@ -151,7 +153,7 @@ fn service_main() { Ok(_) => {} Err(e) => { println!("{e}"); - std::process::exit(1); + paexit(1); } }; } |
