diff --git a/.gitignore b/.gitignore index 1d9d317..e163239 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ tun2proxy.xcframework/ .env project.xcworkspace/ xcuserdata/ +.vs/ .vscode/ .VSCodeCounter/ build/ diff --git a/src/win_svc.rs b/src/win_svc.rs index 44bb7bf..5d65158 100644 --- a/src/win_svc.rs +++ b/src/win_svc.rs @@ -68,8 +68,9 @@ fn run_service(_arguments: Vec) -> Result<(), crate::BoxErro let default = format!("{:?},trust_dns_proto=warn", args.verbosity); env_logger::Builder::from_env(env_logger::Env::default().default_filter_or(default)).init(); - let join_handle = tokio::spawn({ - async move { + 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,13 +81,6 @@ fn run_service(_arguments: Vec) -> Result<(), crate::BoxErro log::error!("main loop error: {}", err); } } - }); - - let rt = tokio::runtime::Builder::new_multi_thread().enable_all().build()?; - rt.block_on(async { - if let Err(err) = join_handle.await { - log::error!("main_entry error {}", err); - } Ok::<(), crate::Error>(()) })?;