fix(client): Improve socket error handling and remove redundant validation

This commit is contained in:
Nils Andreas Svee committed 2026-04-28 17:58:31 +07:00
1 parent e0a48e1d53
commit 3f902f6f2d
1 file changed
+10 -2
+10 -2
View File
@@ -61,13 +61,21 @@ impl Client {
.set_read_timeout(self.config.socket_config.recv_timeout); .set_read_timeout(self.config.socket_config.recv_timeout);
match (outcome, restore) { match (outcome, restore) {
(Ok(outcome), Ok(())) => Ok(outcome), (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), Ok(())) => Err(err),
(_, Err(err)) => Err(ClientError::Socket(err)), (Err(err), Err(_)) => Err(err),
} }
} }
fn open_inner(&mut self, now: ClientTimestamp) -> Result<OpenOutcome, ClientError> { fn open_inner(&mut self, now: ClientTimestamp) -> Result<OpenOutcome, ClientError> {
validate_open_timeouts(&self.config.open_timeouts)?;
let request = OpenRequest { let request = OpenRequest {
params: self.requested.clone(), params: self.requested.clone(),
close: self.config.run_mode == RunMode::NoTest, close: self.config.run_mode == RunMode::NoTest,