perf(header): use MemSlice when parsing headers
This commit is contained in:
committed by
Sean McArthur
parent
5c890321ee
commit
1b556389c0
@@ -40,6 +40,7 @@ impl Header for ContentLength {
|
||||
static NAME: &'static str = "Content-Length";
|
||||
NAME
|
||||
}
|
||||
|
||||
fn parse_header(raw: &Raw) -> ::Result<ContentLength> {
|
||||
// If multiple Content-Length headers were sent, everything can still
|
||||
// be alright if they all contain the same value, and all parse
|
||||
@@ -49,9 +50,9 @@ impl Header for ContentLength {
|
||||
.fold(None, |prev, x| {
|
||||
match (prev, x) {
|
||||
(None, x) => Some(x),
|
||||
(e@Some(Err(_)), _ ) => e,
|
||||
(e @ Some(Err(_)), _ ) => e,
|
||||
(Some(Ok(prev)), Ok(x)) if prev == x => Some(Ok(prev)),
|
||||
_ => Some(Err(::Error::Header))
|
||||
_ => Some(Err(::Error::Header)),
|
||||
}
|
||||
})
|
||||
.unwrap_or(Err(::Error::Header))
|
||||
|
||||
@@ -179,14 +179,14 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn hyper_headers_from_raw_delay() {
|
||||
let headers = Headers::from_raw(&[httparse::Header { name: "Retry-After", value: b"300" }]).unwrap();
|
||||
let headers = make_header!(b"Retry-After", b"300");
|
||||
let retry_after = headers.get::<RetryAfter>().unwrap();
|
||||
assert_eq!(retry_after, &RetryAfter::Delay(Duration::seconds(300)));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn hyper_headers_from_raw_datetime() {
|
||||
let headers = Headers::from_raw(&[httparse::Header { name: "Retry-After", value: b"Sun, 06 Nov 1994 08:49:37 GMT" }]).unwrap();
|
||||
let headers = make_header!(b"Retry-After", b"Sun, 06 Nov 1994 08:49:37 GMT");
|
||||
let retry_after = headers.get::<RetryAfter>().unwrap();
|
||||
let expected = "Sun, 06 Nov 1994 08:49:37 GMT".parse::<HttpDate>().unwrap();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user