chiark / gitweb /
multipart: process_boundary: Rename, and better docs
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 15 Aug 2021 17:51:40 +0000 (18:51 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 15 Aug 2021 17:54:35 +0000 (18:54 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/server.rs
src/multipart.rs

index d8bd514d893e939fe4f60e9fa7aeeee55373877a..1fd6695127ae2a2d3531856f0555632a8332bc47 100644 (file)
@@ -115,7 +115,7 @@ async fn handle(
     else if let Some(start) = boundary_iter.next() { start + boundary.len() }
     else { throw!(anyhow!("initial boundary not found")) };
 
-    let comp = multipart::process_component
+    let comp = multipart::process_boundary
       (&mut warnings, &initial[start..], PartName::m)?
       .ok_or_else(|| anyhow!(r#"no "m" component"#))?;
 
@@ -123,7 +123,7 @@ async fn handle(
       r#"first multipart component must be name="m""#
     )) }
 
-    let mut meta = MetadataFieldIterator::new(comp.payload_start);
+    let mut meta = MetadataFieldIterator::new(comp.payload);
 
     let client: ClientName = meta.need_parse().context("client addr")?;
 
index b858039c73e782c6993442548e70bf08c9f9be99..b076458100315b3cf37469a0086b763043def6bd 100644 (file)
@@ -7,7 +7,7 @@ use crate::prelude::*;
 #[derive(Debug)]
 pub struct Component<'b> {
   pub name: PartName,
-  pub payload_start: &'b [u8],
+  pub payload: &'b [u8],
 }
 
 #[derive(Debug)]
@@ -18,9 +18,13 @@ pub enum PartName { m, d, Other }
 pub type BoundaryFinder = memchr::memmem::Finder<'static>;
 
 #[throws(AE)]
-pub fn process_component<'b>(warnings: &mut Warnings,
-                             after_leader: &'b [u8], expected: PartName)
-                             -> Option<Component<'b>> {
+/// Processes the start of a component (or terminating boundary).
+///
+/// Returned payload is only the start of the payload; the next
+/// boundary has not been identified.
+pub fn process_boundary<'b>(warnings: &mut Warnings,
+                            after_leader: &'b [u8], expected: PartName)
+                            -> Option<Component<'b>> {
   let rhs = after_leader;
   let mut rhs =
        if let Some(rhs) = rhs.strip_prefix(b"\r\n") { rhs         }
@@ -73,7 +77,7 @@ pub fn process_component<'b>(warnings: &mut Warnings,
     };
   }
 
-  Some(Component { name: part_name.unwrap_or(expected), payload_start: rhs })
+  Some(Component { name: part_name.unwrap_or(expected), payload: rhs })
 }
 
 pub struct MetadataFieldIterator<'b> {