From 8d213f85633d7fc9c3e33825e039c782414e0fb0 Mon Sep 17 00:00:00 2001 From: Can Celik Date: Sun, 13 Sep 2026 22:08:15 +0300 Subject: fix: clean up failed terminal observer setup (#4071) refs #3612 --- src/server/client_transport.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/server') diff --git a/src/server/client_transport.rs b/src/server/client_transport.rs index da682c06..210a840b 100644 --- a/src/server/client_transport.rs +++ b/src/server/client_transport.rs @@ -1042,10 +1042,17 @@ fn client_read_loop_with_endpoint_controls( ClientMessage::ObserveTerminal { target } => { #[cfg(unix)] { - stream.set_send_timeout(Some(OBSERVER_WRITE_TIMEOUT))?; // macOS Unix sockets can block even with per-send MSG_DONTWAIT. // ClientStreamReader preserves blocking reads on the shared socket. - stream.set_nonblocking(true)?; + let configured = stream + .set_send_timeout(Some(OBSERVER_WRITE_TIMEOUT)) + .and_then(|()| stream.set_nonblocking(true)); + if let Err(err) = configured { + let _ = crate::platform::shutdown_client_stream(&stream); + let _ = server_event_tx + .blocking_send(ServerEvent::ClientDisconnected { client_id }); + return Err(err); + } } ServerEvent::ClientObserveTerminal { client_id, target } } -- cgit v1.2.3