micro_http: adjust match on header fields

Use case-insensitive check since some http clients use lower case
headers.

Signed-off-by: Bob Potter <bobby.potter@gmail.com>
Signed-off-by: YUAN LYU <lyuyuan92@gmail.com>
This commit is contained in:
Bob Potter
2020-01-26 20:59:56 -06:00
committed by Adrian Catangiu
parent 59ab64440a
commit 4ee7142098

View File

@@ -32,13 +32,14 @@ impl Header {
}
fn try_from(string: &[u8]) -> Result<Self, RequestError> {
if let Ok(utf8_string) = String::from_utf8(string.to_vec()) {
if let Ok(mut utf8_string) = String::from_utf8(string.to_vec()) {
utf8_string.make_ascii_lowercase();
match utf8_string.trim() {
"Content-Length" => Ok(Header::ContentLength),
"Content-Type" => Ok(Header::ContentType),
"Expect" => Ok(Header::Expect),
"Transfer-Encoding" => Ok(Header::TransferEncoding),
"Server" => Ok(Header::Server),
"content-length" => Ok(Header::ContentLength),
"content-type" => Ok(Header::ContentType),
"expect" => Ok(Header::Expect),
"transfer-encoding" => Ok(Header::TransferEncoding),
"server" => Ok(Header::Server),
_ => Err(RequestError::InvalidHeader),
}
} else {
@@ -403,5 +404,8 @@ mod tests {
let header = Header::try_from(b"Transfer-Encoding").unwrap();
assert_eq!(header.raw(), b"Transfer-Encoding");
let header = Header::try_from(b"content-length").unwrap();
assert_eq!(header.raw(), b"Content-Length");
}
}