Merge remote-tracking branch 'master/master' into refactor/awc

This commit is contained in:
fakeshadow 2021-02-04 23:49:29 +08:00
commit a73a1225ff
1 changed files with 15 additions and 8 deletions

View File

@ -191,6 +191,9 @@ fn bytes_to_string(body: Bytes, encoding: &'static Encoding) -> Result<String, E
/// building extractors on top of `Payload`.
///
/// By default, the payload size limit is 256kB and there is no mime type condition.
///
/// To use this, add an instance of it to your app or service through one of the
/// `.app_data()` methods.
#[derive(Clone)]
pub struct PayloadConfig {
limit: usize,
@ -198,7 +201,7 @@ pub struct PayloadConfig {
}
impl PayloadConfig {
/// Create new instance with a size limit and no mime type condition.
/// Create new instance with a size limit (in bytes) and no mime type condition.
pub fn new(limit: usize) -> Self {
Self {
limit,
@ -206,7 +209,7 @@ impl PayloadConfig {
}
}
/// Set maximum accepted payload size. The default limit is 256kB.
/// Set maximum accepted payload size in bytes. The default limit is 256kB.
pub fn limit(mut self, limit: usize) -> Self {
self.limit = limit;
self
@ -286,10 +289,12 @@ impl HttpMessageBody {
if let Some(l) = req.headers().get(&header::CONTENT_LENGTH) {
match l.to_str() {
Ok(s) => match s.parse::<usize>() {
Ok(l) if l > DEFAULT_CONFIG_LIMIT => {
err = Some(PayloadError::Overflow)
Ok(l) => {
if l > DEFAULT_CONFIG_LIMIT {
err = Some(PayloadError::Overflow);
}
length = Some(l)
}
Ok(l) => length = Some(l),
Err(_) => err = Some(PayloadError::UnknownLength),
},
Err(_) => err = Some(PayloadError::UnknownLength),
@ -313,9 +318,11 @@ impl HttpMessageBody {
/// Change max size of payload. By default max size is 256kB
pub fn limit(mut self, limit: usize) -> Self {
if let Some(l) = self.length {
if l > limit {
self.err = Some(PayloadError::Overflow);
}
self.err = if l > limit {
Some(PayloadError::Overflow)
} else {
None
};
}
self.limit = limit;
self