summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/platform.rs2
-rw-r--r--src/platform/windows.rs14
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);
}
};
}