diff --git a/src/win_svc.rs b/src/win_svc.rs index 5d65158..afca2f1 100644 --- a/src/win_svc.rs +++ b/src/win_svc.rs @@ -63,14 +63,15 @@ fn run_service(_arguments: Vec) -> Result<(), crate::BoxErro // Tell the system that the service is running now status_handle.set_service_status(next_status.clone())?; - let args = crate::Args::parse_args(); + // main logic here + { + let args = crate::Args::parse_args(); - let default = format!("{:?},trust_dns_proto=warn", args.verbosity); - env_logger::Builder::from_env(env_logger::Env::default().default_filter_or(default)).init(); + let default = format!("{:?},trust_dns_proto=warn", args.verbosity); + env_logger::Builder::from_env(env_logger::Env::default().default_filter_or(default)).init(); - let rt = tokio::runtime::Builder::new_multi_thread().enable_all().build()?; - rt.block_on(async { - { + let rt = tokio::runtime::Builder::new_multi_thread().enable_all().build()?; + rt.block_on(async { unsafe extern "C" fn traffic_cb(status: *const crate::TrafficStatus, _: *mut std::ffi::c_void) { let status = &*status; log::debug!("Traffic: ▲ {} : ▼ {}", status.tx, status.rx); @@ -80,9 +81,9 @@ fn run_service(_arguments: Vec) -> Result<(), crate::BoxErro if let Err(err) = crate::desktop_run_async(args, shutdown_token).await { log::error!("main loop error: {}", err); } - } - Ok::<(), crate::Error>(()) - })?; + Ok::<(), crate::Error>(()) + })?; + } // Tell the system that the service is stopped now next_status.current_state = windows_service::service::ServiceState::Stopped;