chiark / gitweb /
server: use meta.need
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 9 Aug 2021 00:29:01 +0000 (01:29 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 9 Aug 2021 00:29:01 +0000 (01:29 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/bin/server.rs
src/multipart.rs

index c5eaf9296a99be682fff4d3b7b86e1a0ece0b59c..42e3785024f00a39d3892a3cb70d90706c847fd3 100644 (file)
@@ -90,12 +90,7 @@ async fn handle(
 
     let mut meta = MetadataFieldIterator::new(comp.payload_start);
 
-    let client = meta.next()
-      .map(|r| r.map_err(Into::into))
-      .unwrap_or_else(|| Err(anyhow!("missing")))
-      .context("client addr")?;
-
-    let client: IpAddr = client.parse().context("client address")?;
+    let client: ClientName = meta.need().context("client addr")?;
 // let client = all_clients.get(&client).ok_or_else(|| anyhow!(BAD_CLIENT))?;
 
     eprintln!("boundary={:?} start={} name={:?} client={}",
index 5099f05fe120b24fb9974060e599dd631f7774bc..0eaabdad1dbdf37b79f1080008c17c52d7f16040 100644 (file)
@@ -90,7 +90,7 @@ impl<'b> MetadataFieldIterator<'b> {
   #[throws(AE)]
   pub fn need<T>(&mut self) -> T
   where T: FromStr,
-        T::Err: std::error::Error + Sync + Send + 'static,
+        AE: From<T::Err>,
   {
     self.parse()?.ok_or_else(|| anyhow!("missing"))?
   }
@@ -98,7 +98,7 @@ impl<'b> MetadataFieldIterator<'b> {
   #[throws(AE)]
   pub fn parse<T>(&mut self) -> Option<T>
   where T: FromStr,
-        T::Err: std::error::Error + Sync + Send + 'static,
+        AE: From<T::Err>,
   {
     let s = if let Some(r) = self.next() { r? } else { return None };
     Some(s.parse()?)