update read_up_to_bytes_from_request with more robust implementation
This commit is contained in:
@@ -221,12 +221,18 @@ where
|
|||||||
let mut data_store = Vec::new();
|
let mut data_store = Vec::new();
|
||||||
let mut total_read = 0;
|
let mut total_read = 0;
|
||||||
loop {
|
loop {
|
||||||
|
let left = max_read - total_read;
|
||||||
let mut buf = [0_u8; 64];
|
let mut buf = [0_u8; 64];
|
||||||
let read = request.read(&mut buf).await?;
|
let s_buf = if buf.len() <= left {
|
||||||
|
&mut buf
|
||||||
|
} else {
|
||||||
|
&mut buf[0..left]
|
||||||
|
};
|
||||||
|
let read = request.read(s_buf).await?;
|
||||||
if read == 0 {
|
if read == 0 {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
let actual_data = &buf[0..read];
|
let actual_data = &s_buf[0..read];
|
||||||
total_read += read;
|
total_read += read;
|
||||||
if total_read > max_read {
|
if total_read > max_read {
|
||||||
bail!("Request too large {total_read} > {max_read}");
|
bail!("Request too large {total_read} > {max_read}");
|
||||||
|
|||||||
Reference in New Issue
Block a user