@@ -213,12 +213,12 @@ fn health_check_ready() -> bool {
213213 Ok ( value) => value,
214214 Err ( _) => return false ,
215215 } ;
216- let mut stream = match TcpStream :: connect_timeout ( & addr, Duration :: from_millis ( 300 ) ) {
216+ let mut stream = match TcpStream :: connect_timeout ( & addr, Duration :: from_millis ( 1000 ) ) {
217217 Ok ( value) => value,
218218 Err ( _) => return false ,
219219 } ;
220- let _ = stream. set_read_timeout ( Some ( Duration :: from_millis ( 500 ) ) ) ;
221- let _ = stream. set_write_timeout ( Some ( Duration :: from_millis ( 500 ) ) ) ;
220+ let _ = stream. set_read_timeout ( Some ( Duration :: from_millis ( 1500 ) ) ) ;
221+ let _ = stream. set_write_timeout ( Some ( Duration :: from_millis ( 1000 ) ) ) ;
222222
223223 let body = r#"{"action":"health-check","params":{}}"# ;
224224 let request = format ! (
@@ -244,7 +244,7 @@ fn backend_port_occupied() -> bool {
244244 Ok ( value) => value,
245245 Err ( _) => return false ,
246246 } ;
247- TcpStream :: connect_timeout ( & addr, Duration :: from_millis ( 300 ) ) . is_ok ( )
247+ TcpStream :: connect_timeout ( & addr, Duration :: from_millis ( 1000 ) ) . is_ok ( )
248248}
249249
250250fn backend_port_occupied_message ( ) -> String {
@@ -535,6 +535,14 @@ fn spawn_backend(app: &tauri::App) -> Result<Option<Child>, Box<dyn std::error::
535535 return Ok ( None ) ;
536536 }
537537
538+ if backend_port_occupied ( ) {
539+ desktop_log ( "backend port is occupied but not ready yet; waiting before stale cleanup" ) ;
540+ if wait_for_backend ( Duration :: from_secs ( 5 ) ) {
541+ desktop_log ( "existing backend became ready while waiting; reusing 127.0.0.1:3737 listener" ) ;
542+ return Ok ( None ) ;
543+ }
544+ }
545+
538546 release_stale_backend_port ( ) ;
539547
540548 if health_check_ready ( ) {
@@ -543,8 +551,13 @@ fn spawn_backend(app: &tauri::App) -> Result<Option<Child>, Box<dyn std::error::
543551 }
544552
545553 if backend_port_occupied ( ) {
554+ desktop_log ( "backend port remains occupied after cleanup; waiting once more before surfacing occupied-port error" ) ;
555+ if wait_for_backend ( Duration :: from_secs ( 5 ) ) {
556+ desktop_log ( "backend became ready after occupied-port grace wait; reusing 127.0.0.1:3737 listener" ) ;
557+ return Ok ( None ) ;
558+ }
546559 let message = backend_port_occupied_message ( ) ;
547- desktop_log ( format ! ( "backend port remains occupied after cleanup; {message}" ) ) ;
560+ desktop_log ( format ! ( "backend port remains occupied after cleanup and grace wait ; {message}" ) ) ;
548561 return startup_error ( message) ;
549562 }
550563
0 commit comments