// end delimiter for the metadata not yet located, but in here somewhere
initial: Box<[u8]>,
initial_remaining: usize,
+ length_hint: usize,
body: hyper::body::Body,
reply_to: tokio::sync::oneshot::Sender<WebResponse>,
warnings: Warnings,
let wreq = WebRequest {
initial,
initial_remaining,
+ length_hint,
body,
warnings: mem::take(&mut warnings),
reply_to
req = web.recv() =>
{
let WebRequest {
- initial, initial_remaining, body,
+ initial, initial_remaining, length_hint, mut body,
reply_to, warnings,
} = req.ok_or_else(|| anyhow!("webservers all shut down!"))?;
match async {
- // xxx size limit
-
- let whole_request = body.try_fold(
- initial.into_vec(),
- |mut w, by| async move { w.extend_from_slice(&by); Ok(w) },
+ let whole_request = read_limited_bytes(
+ usize::MAX /* xxx */,
+ initial,
+ length_hint,
+ &mut body
).await.context("read request body")?;
dbg!(whole_request.len());