diff --git a/rust/src/webserver/mod.rs b/rust/src/webserver/mod.rs index 7f128aa..e03ce19 100644 --- a/rust/src/webserver/mod.rs +++ b/rust/src/webserver/mod.rs @@ -221,12 +221,18 @@ where let mut data_store = Vec::new(); let mut total_read = 0; loop { + let left = max_read - total_read; let mut buf = [0_u8; 64]; - let read = request.read(&mut buf).await?; + let s_buf = if buf.len() <= left { + &mut buf + } else { + &mut buf[0..left] + }; + let read = request.read(s_buf).await?; if read == 0 { break; } - let actual_data = &buf[0..read]; + let actual_data = &s_buf[0..read]; total_read += read; if total_read > max_read { bail!("Request too large {total_read} > {max_read}");