chiark / gitweb /
server: use Content-Length length hint in reading body, redo
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 15 Aug 2021 17:16:53 +0000 (18:16 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 15 Aug 2021 17:16:53 +0000 (18:16 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/server.rs

index fec69cf75edacbf7d56681ed33717c429c36e24f..e7daf489c53f929bb0d9f3c60b02d7410204136a 100644 (file)
@@ -256,17 +256,17 @@ async fn run_client(_ic: Arc<InstanceConfig>,
       req = web.recv() =>
       {
         let WebRequest {
-          initial, initial_remaining, length_hint, 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());