From f1f5dfe541040f84de68f9abc6b6e259bb034cc8 Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee Date: Tue, 28 Apr 2026 16:42:06 +0700 Subject: [PATCH] test(client): Verify socket read timeout restoration after open() --- crates/irtt-client/src/client.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/crates/irtt-client/src/client.rs b/crates/irtt-client/src/client.rs index ebc8db0..b503bee 100644 --- a/crates/irtt-client/src/client.rs +++ b/crates/irtt-client/src/client.rs @@ -476,6 +476,30 @@ mod tests { server.join(); } + #[test] + fn open_restores_configured_read_timeout_after_timeout() { + let server = timeout_server(Duration::from_millis(700)); + let config = ClientConfig { + open_timeouts: vec![Duration::from_millis(200)], + socket_config: crate::SocketConfig { + recv_timeout: Some(Duration::from_millis(450)), + ..crate::SocketConfig::default() + }, + ..default_test_config(server.addr) + }; + let mut client = Client::connect(config).unwrap(); + assert!(matches!( + client.open(ClientTimestamp::now()), + Err(ClientError::OpenTimeout) + )); + + let start = std::time::Instant::now(); + let mut buf = [0_u8; 1]; + assert!(client.socket.recv(&mut buf).is_err()); + assert!(start.elapsed() >= Duration::from_millis(350)); + server.join(); + } + fn recv_request_timeout( socket: &UdpSocket, tx: &mpsc::Sender>,