From 4ee7142098f9d0e54ead4a708016b0dc24699e5f Mon Sep 17 00:00:00 2001 From: Bob Potter Date: Sun, 26 Jan 2020 20:59:56 -0600 Subject: [PATCH] micro_http: adjust match on header fields Use case-insensitive check since some http clients use lower case headers. Signed-off-by: Bob Potter Signed-off-by: YUAN LYU --- src/common/headers.rs | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/common/headers.rs b/src/common/headers.rs index 47517ca..060b568 100644 --- a/src/common/headers.rs +++ b/src/common/headers.rs @@ -32,13 +32,14 @@ impl Header { } fn try_from(string: &[u8]) -> Result { - 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"); } }