diff --git a/apps/desktop/src-tauri/Cargo.lock b/apps/desktop/src-tauri/Cargo.lock index c910f29..39ee6f7 100644 --- a/apps/desktop/src-tauri/Cargo.lock +++ b/apps/desktop/src-tauri/Cargo.lock @@ -3765,7 +3765,7 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tarkov-checker-desktop" -version = "0.1.0" +version = "0.1.1" dependencies = [ "anyhow", "axum", diff --git a/apps/desktop/src-tauri/src/http_server.rs b/apps/desktop/src-tauri/src/http_server.rs index afd894f..e640bde 100644 --- a/apps/desktop/src-tauri/src/http_server.rs +++ b/apps/desktop/src-tauri/src/http_server.rs @@ -325,6 +325,19 @@ pub fn spawn(deps: Deps) { return; } }; + // Children must not inherit the listener (WebView2 helpers, the + // self-update respawn): an inherited handle keeps the port bound + // after this process exits and the successor's bind dies with 10048. + #[cfg(windows)] + unsafe { + use std::os::windows::io::AsRawSocket; + use windows_sys::Win32::Foundation::{SetHandleInformation, HANDLE_FLAG_INHERIT}; + SetHandleInformation( + listener.as_raw_socket() as usize as _, + HANDLE_FLAG_INHERIT, + 0, + ); + } eprintln!("[http-server] listening on http://{addr}"); let app = router(state).layer(Extension(app_handle)); if let Err(err) = axum::serve(listener, app).await {