@@ -1510,6 +1510,20 @@ mod tests {
15101510 }
15111511 }
15121512
1513+ req ! {
1514+ // test the avx2 parsing
1515+ test_request_header_no_space_after_colon,
1516+ b"GET / HTTP/1.1\r \n User-Agent:omg-no-space1234567890some1234567890agent1234567890\r \n \r \n " ,
1517+ |req| {
1518+ assert_eq!( req. method. unwrap( ) , "GET" ) ;
1519+ assert_eq!( req. path. unwrap( ) , "/" ) ;
1520+ assert_eq!( req. version. unwrap( ) , 1 ) ;
1521+ assert_eq!( req. headers. len( ) , 1 ) ;
1522+ assert_eq!( req. headers[ 0 ] . name, "User-Agent" ) ;
1523+ assert_eq!( req. headers[ 0 ] . value, & b"omg-no-space1234567890some1234567890agent1234567890" [ ..] ) ;
1524+ }
1525+ }
1526+
15131527 req ! {
15141528 test_request_headers_max,
15151529 b"GET / HTTP/1.1\r \n A: A\r \n B: B\r \n C: C\r \n D: D\r \n \r \n " ,
@@ -2586,4 +2600,20 @@ mod tests {
25862600 assert_eq ! ( response. headers[ 0 ] . name, "Space-Before-Header" ) ;
25872601 assert_eq ! ( response. headers[ 0 ] . value, & b"hello there" [ ..] ) ;
25882602 }
2603+
2604+ #[ test]
2605+ fn test_no_space_after_colon ( ) {
2606+ let mut headers = [ EMPTY_HEADER ; 1 ] ;
2607+ let mut response = Response :: new ( & mut headers[ ..] ) ;
2608+ let result = crate :: ParserConfig :: default ( )
2609+ . parse_response ( & mut response, b"HTTP/1.1 200 OK\r \n foo:bar\r \n \r \n " ) ;
2610+
2611+ assert_eq ! ( result, Ok ( Status :: Complete ( 28 ) ) ) ;
2612+ assert_eq ! ( response. version. unwrap( ) , 1 ) ;
2613+ assert_eq ! ( response. code. unwrap( ) , 200 ) ;
2614+ assert_eq ! ( response. reason. unwrap( ) , "OK" ) ;
2615+ assert_eq ! ( response. headers. len( ) , 1 ) ;
2616+ assert_eq ! ( response. headers[ 0 ] . name, "foo" ) ;
2617+ assert_eq ! ( response. headers[ 0 ] . value, & b"bar" [ ..] ) ;
2618+ }
25892619}
0 commit comments