fix: Use more robust check for max_request_size
This commit is contained in:
parent
3366113939
commit
da3fac8cb4
1 changed files with 12 additions and 13 deletions
|
|
@ -219,20 +219,19 @@ pub async fn download_media(&self, url: &str) -> Result<(OwnedMxcUri, usize)> {
|
||||||
use http::header::CONTENT_TYPE;
|
use http::header::CONTENT_TYPE;
|
||||||
use ruma::Mxc;
|
use ruma::Mxc;
|
||||||
|
|
||||||
let max_request_size = self.services.server.config.max_request_size.try_into()?;
|
|
||||||
|
|
||||||
let response = self.services.client.url_preview.get(url).send().await?;
|
let response = self.services.client.url_preview.get(url).send().await?;
|
||||||
if response
|
|
||||||
.content_length()
|
|
||||||
.is_none_or(|len| len > max_request_size)
|
|
||||||
{
|
|
||||||
return Err!(Request(TooLarge(
|
|
||||||
"Content length not given or greater than max_request_size"
|
|
||||||
)));
|
|
||||||
}
|
|
||||||
|
|
||||||
let content_type = response.headers().get(CONTENT_TYPE).cloned();
|
let content_type = response.headers().get(CONTENT_TYPE).cloned();
|
||||||
let media = response.bytes().await?;
|
let media = response
|
||||||
|
.limit_read(
|
||||||
|
self.services
|
||||||
|
.server
|
||||||
|
.config
|
||||||
|
.max_request_size
|
||||||
|
.try_into()
|
||||||
|
.expect("u64 should fit in usize"),
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
let mxc = Mxc {
|
let mxc = Mxc {
|
||||||
server_name: self.services.globals.server_name(),
|
server_name: self.services.globals.server_name(),
|
||||||
media_id: &random_string(super::MXC_LENGTH),
|
media_id: &random_string(super::MXC_LENGTH),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue