@@ -1510,6 +1510,20 @@ mod tests {
1510
1510
}
1511
1511
}
1512
1512
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
+
1513
1527
req ! {
1514
1528
test_request_headers_max,
1515
1529
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 {
2586
2600
assert_eq ! ( response. headers[ 0 ] . name, "Space-Before-Header" ) ;
2587
2601
assert_eq ! ( response. headers[ 0 ] . value, & b"hello there" [ ..] ) ;
2588
2602
}
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
+ }
2589
2619
}
0 commit comments