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>,