use 32kb max hw buffer

This commit is contained in:
fakeshadow 2021-01-25 07:06:38 -08:00
parent 9edd9e1e18
commit 09128d1763
2 changed files with 16 additions and 9 deletions

View File

@ -203,7 +203,13 @@ impl MessageType for Request {
(len, method, uri, version, req.headers.len()) (len, method, uri, version, req.headers.len())
} }
httparse::Status::Partial => return Ok(None), httparse::Status::Partial => {
return if src.len() >= super::dispatcher::MAX_HW_BUFFER_SIZE {
Err(ParseError::TooLarge)
} else {
Ok(None)
}
}
} }
}; };

View File

@ -31,7 +31,8 @@ use super::payload::{Payload, PayloadSender, PayloadStatus};
use super::{Message, MessageType}; use super::{Message, MessageType};
const LW_BUFFER_SIZE: usize = 1024; const LW_BUFFER_SIZE: usize = 1024;
const HW_BUFFER_SIZE: usize = 8192; const HW_BUFFER_SIZE: usize = 1024 * 8;
pub(crate) const MAX_HW_BUFFER_SIZE: usize = HW_BUFFER_SIZE * 4;
const MAX_PIPELINED_MESSAGES: usize = 16; const MAX_PIPELINED_MESSAGES: usize = 16;
bitflags! { bitflags! {
@ -893,13 +894,13 @@ where
{ {
let mut read_some = false; let mut read_some = false;
// reserve capacity for buffer
let remaining = buf.capacity() - buf.len();
if remaining < LW_BUFFER_SIZE {
buf.reserve(HW_BUFFER_SIZE - remaining);
}
loop { loop {
// reserve capacity for buffer
let remaining = buf.capacity() - buf.len();
if remaining < LW_BUFFER_SIZE {
buf.reserve(HW_BUFFER_SIZE - remaining);
}
match actix_codec::poll_read_buf(Pin::new(io), cx, buf) { match actix_codec::poll_read_buf(Pin::new(io), cx, buf) {
Poll::Pending => { Poll::Pending => {
return if read_some { Ok(Some(false)) } else { Ok(None) }; return if read_some { Ok(Some(false)) } else { Ok(None) };
@ -910,7 +911,7 @@ where
} else { } else {
// If buf is full return but do not disconnect since // If buf is full return but do not disconnect since
// there is more reading to be done // there is more reading to be done
if buf.len() >= HW_BUFFER_SIZE { if buf.len() >= MAX_HW_BUFFER_SIZE {
return Ok(Some(false)); return Ok(Some(false));
} }