From 2380d76da34a6e9602f80c439465cf96e44b7522 Mon Sep 17 00:00:00 2001 From: Nils Andreas Svee Date: Tue, 28 Apr 2026 21:52:04 +0700 Subject: [PATCH] refactor(client): dynamic receive buffer sizing based on negotiated parameters --- crates/irtt-client/src/client.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/crates/irtt-client/src/client.rs b/crates/irtt-client/src/client.rs index e5d2e5c..db49dc7 100644 --- a/crates/irtt-client/src/client.rs +++ b/crates/irtt-client/src/client.rs @@ -5,9 +5,9 @@ use std::{ }; use irtt_proto::{ - close::CloseRequest, decode_echo_reply, encode_close_request, encode_echo_request, - encode_open_request, flags, EchoReply, EchoRequest, OpenReply, OpenRequest, Params, ServerFill, - TimestampFields, PROTOCOL_VERSION, + close::CloseRequest, decode_echo_reply, echo_packet_len, encode_close_request, + encode_echo_request, encode_open_request, flags, EchoReply, EchoRequest, OpenReply, + OpenRequest, Params, ServerFill, TimestampFields, PROTOCOL_VERSION, }; use crate::{ @@ -24,7 +24,7 @@ use crate::{ }; const MAX_OPEN_PACKET_SIZE: usize = 512; -const MAX_RECV_PACKET_SIZE: usize = 2048; +const MIN_RECV_BUFFER_SIZE: usize = 2048; #[derive(Debug)] pub struct Client { @@ -238,7 +238,8 @@ impl Client { ClientPhase::NoTestCompleted => return Err(ClientError::AlreadyCompleted), } - let mut buf = [0_u8; MAX_RECV_PACKET_SIZE]; + let buf_size = self.recv_buffer_size(); + let mut buf = vec![0_u8; buf_size]; let size = match self.socket.recv(&mut buf) { Ok(size) => size, Err(err)