♻️ Remove unwraps from file server module
parent
f212931842
commit
eada65d94b
|
@ -7,7 +7,7 @@ use std::{
|
||||||
borrow::Cow,
|
borrow::Cow,
|
||||||
cmp::min,
|
cmp::min,
|
||||||
collections::HashMap,
|
collections::HashMap,
|
||||||
convert::{Infallible, TryInto},
|
convert::{Infallible, TryFrom, TryInto},
|
||||||
error::Error,
|
error::Error,
|
||||||
fmt::Debug,
|
fmt::Debug,
|
||||||
io::SeekFrom,
|
io::SeekFrom,
|
||||||
|
@ -319,28 +319,30 @@ async fn serve_file (
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
let mut buffer = vec! [0_u8; 65_536];
|
let mut buffer = vec! [0_u8; 65_536];
|
||||||
let bytes_read: u64 = f.read (&mut buffer).await.unwrap ().try_into ().unwrap ();
|
let bytes_read = f.read (&mut buffer).await.expect ("Couldn't read from file");
|
||||||
|
|
||||||
let bytes_read = min (bytes_left, bytes_read);
|
|
||||||
|
|
||||||
buffer.truncate (bytes_read.try_into ().unwrap ());
|
|
||||||
|
|
||||||
if bytes_read == 0 {
|
if bytes_read == 0 {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
buffer.truncate (bytes_read);
|
||||||
|
|
||||||
|
let bytes_read_64 = u64::try_from (bytes_read).expect ("Couldn't fit usize into u64");
|
||||||
|
|
||||||
|
let bytes_read_64 = min (bytes_left, bytes_read_64);
|
||||||
|
|
||||||
if tx.send (Ok::<_, Infallible> (buffer)).await.is_err () {
|
if tx.send (Ok::<_, Infallible> (buffer)).await.is_err () {
|
||||||
warn! ("Cancelling file stream (Sent {} out of {} bytes)", bytes_sent, content_length);
|
warn! ("Cancelling file stream (Sent {} out of {} bytes)", bytes_sent, content_length);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
bytes_left -= bytes_read;
|
bytes_left -= bytes_read_64;
|
||||||
if bytes_left == 0 {
|
if bytes_left == 0 {
|
||||||
debug! ("Finished");
|
debug! ("Finished");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
bytes_sent += bytes_read;
|
bytes_sent += bytes_read_64;
|
||||||
while next_mark <= bytes_sent {
|
while next_mark <= bytes_sent {
|
||||||
trace! ("Sent {} bytes", next_mark);
|
trace! ("Sent {} bytes", next_mark);
|
||||||
next_mark += mark_interval;
|
next_mark += mark_interval;
|
||||||
|
@ -558,11 +560,11 @@ async fn internal_serve_all (
|
||||||
ParsedRange::Ok (range) => {
|
ParsedRange::Ok (range) => {
|
||||||
if uri.query () == Some ("as_markdown") {
|
if uri.query () == Some ("as_markdown") {
|
||||||
const MAX_BUF_SIZE: u32 = 1_000_000;
|
const MAX_BUF_SIZE: u32 = 1_000_000;
|
||||||
if file_len > MAX_BUF_SIZE.try_into ().unwrap () {
|
if file_len > MAX_BUF_SIZE.into () {
|
||||||
MarkdownErr (MarkdownError::TooBig)
|
MarkdownErr (MarkdownError::TooBig)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
let mut buffer = vec! [0_u8; MAX_BUF_SIZE.try_into ().unwrap ()];
|
let mut buffer = vec! [0_u8; MAX_BUF_SIZE.try_into ().expect ("Couldn't fit u32 into usize")];
|
||||||
let bytes_read = file.read (&mut buffer).await?;
|
let bytes_read = file.read (&mut buffer).await?;
|
||||||
buffer.truncate (bytes_read);
|
buffer.truncate (bytes_read);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue