From 30675ff85fd7aba4836144bc3e5535a5333355dc Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee Date: Tue, 28 Apr 2026 17:29:13 +0700 Subject: [PATCH] fix(client): Improve socket error handling and remove redundant validation --- crates/irtt-client/src/client.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/crates/irtt-client/src/client.rs b/crates/irtt-client/src/client.rs index 2ef68f5..56e4052 100644 --- a/crates/irtt-client/src/client.rs +++ b/crates/irtt-client/src/client.rs @@ -61,13 +61,21 @@ impl Client { .set_read_timeout(self.config.socket_config.recv_timeout); match (outcome, restore) { (Ok(outcome), Ok(())) => Ok(outcome), + (Ok(outcome), Err(_)) => { + // Open succeeded and state already advanced. Treating a + // read-timeout restore failure as fatal would leave the + // caller believing open failed while internal state is + // Open/NoTestCompleted. The socket remains usable; the + // worst case is a stale read timeout which Milestone 3 + // send/recv methods will set per-operation anyway. + Ok(outcome) + } (Err(err), Ok(())) => Err(err), - (_, Err(err)) => Err(ClientError::Socket(err)), + (Err(err), Err(_)) => Err(err), } } fn open_inner(&mut self, now: ClientTimestamp) -> Result { - validate_open_timeouts(&self.config.open_timeouts)?; let request = OpenRequest { params: self.requested.clone(), close: self.config.run_mode == RunMode::NoTest,