diff --git a/src/api/client/media.rs b/src/api/client/media.rs index 7ae22a27..f30a7966 100644 --- a/src/api/client/media.rs +++ b/src/api/client/media.rs @@ -183,12 +183,27 @@ pub(crate) async fn get_content_as_filename_route( media_id: &body.media_id, }; - let Ok(FileMeta { + let FileMeta { content, content_type, content_disposition, - }) = fetch_file(&services, &mxc, user, body.timeout_ms, None).await else { - return Err!(Request(NotFound("Media not found."))); + } = match fetch_file(&services, &mxc, user, body.timeout_ms, None).await { + Ok(meta) => meta, + Err(e) => { + match e { + conduwuit::Error::Io(e) => { + match e.kind() { + std::io::ErrorKind::PermissionDenied => + // to not leak that a file exists + return Err!(Request(NotFound("Media not found."))), + std::io::ErrorKind::NotFound => + return Err!(Request(NotFound("Media not found."))), + _ => return Err!(Request(Unknown("Unknown error when fetching file."))), + } + }, + _ => return Err!(Request(Unknown("Unknown error when fetching file."))), + } + } }; Ok(get_content_as_filename::v1::Response {