diff --git a/src/main.rs b/src/main.rs index 95ad3d4..8b9a0dd 100644 --- a/src/main.rs +++ b/src/main.rs @@ -70,8 +70,6 @@ async fn process (mut stream: TcpStream, args: A) -> Result<()> { let headers = Headers::parse(&mut data).await; - let length = headers.get("Content-Length").parse().unwrap(); - let body = parse_req_body(&mut data, length).await; use Method as M; let response = match (method, target.as_str()) { @@ -89,6 +87,9 @@ async fn process (mut stream: TcpStream, args: A) -> Result<()> { Response::OctetStream(buf) }, (M::POST, r) if r.starts_with("/files") => 'file : { + let length = headers.get("Content-Length").parse().unwrap(); + let body = parse_req_body(&mut data, length).await; + let Some(path) = &args.directory else { break 'file Response::_500; }; let path = path.join(r.trim_start_matches("/files/")); let Ok(mut f) = File::create(path).await else { break 'file Response::_500; };