diff --git a/src/multipart.rs b/src/multipart.rs index 16eada6..15ca55f 100644 --- a/src/multipart.rs +++ b/src/multipart.rs @@ -173,10 +173,20 @@ async fn write_to_file( ))); } } - file.write_all(&chunk).await.map_err(|write_err| { - log::error!("could not write file {:?}", write_err); - error::ErrorInternalServerError("could not write file") - })?; + file.write_all(&chunk) + .await + .map_err(|write_err| match write_err.kind() { + std::io::ErrorKind::StorageFull => { + log::warn!("storage is full {:?}", write_err); + error::ErrorServiceUnavailable( + "storage is full, you will need to wait for some files to expire", + ) + } + _ => { + log::error!("could not write file {:?}", write_err); + error::ErrorInternalServerError("could not write file") + } + })?; } Ok(written_bytes) }