diff --git a/src/lib.rs b/src/lib.rs index 90295e0..a6a926f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -432,7 +432,10 @@ impl<'h, 'b> Response<'h, 'b> { bytes.slice(); self.reason = Some(""); }, - b'\n' => self.reason = Some(""), + b'\n' => { + bytes.slice(); + self.reason = Some(""); + } _ => return Err(Error::Status), } diff --git a/tests/uri.rs b/tests/uri.rs index 4d369c8..32775af 100644 --- a/tests/uri.rs +++ b/tests/uri.rs @@ -1,27 +1,47 @@ extern crate httparse; -use httparse::{Error, Request, Status, EMPTY_HEADER}; +use httparse::{Error, Request, Response, Status, EMPTY_HEADER}; const NUM_OF_HEADERS: usize = 4; macro_rules! req { - ($name:ident, $buf:expr, |$arg:ident| $body:expr) => ( + ($name:ident, $buf:expr, |$arg:ident| $body:expr) => { req! {$name, $buf, Ok(Status::Complete($buf.len())), |$arg| $body } - ); - ($name:ident, $buf:expr, $len:expr, |$arg:ident| $body:expr) => ( - #[test] - fn $name() { - let mut headers = [EMPTY_HEADER; NUM_OF_HEADERS]; - let mut req = Request::new(&mut headers[..]); - let status = req.parse($buf.as_ref()); - assert_eq!(status, $len); - closure(req); - - fn closure($arg: Request) { - $body + }; + ($name:ident, $buf:expr, $len:expr, |$arg:ident| $body:expr) => { + #[test] + fn $name() { + let mut headers = [EMPTY_HEADER; NUM_OF_HEADERS]; + let mut req = Request::new(&mut headers[..]); + let status = req.parse($buf.as_ref()); + assert_eq!(status, $len); + closure(req); + + fn closure($arg: Request) { + $body + } } - } - ) + }; +} + +macro_rules! res { + ($name:ident, $buf:expr, |$arg:ident| $body:expr) => { + res! {$name, $buf, Ok(Status::Complete($buf.len())), |$arg| $body } + }; + ($name:ident, $buf:expr, $len:expr, |$arg:ident| $body:expr) => { + #[test] + fn $name() { + let mut headers = [EMPTY_HEADER; NUM_OF_HEADERS]; + let mut res = Response::new(&mut headers[..]); + let status = res.parse($buf.as_ref()); + assert_eq!(status, $len); + closure(res); + + fn closure($arg: Response) { + $body + } + } + }; } req! { @@ -37,7 +57,6 @@ req! { } } - req! { urltest_002, b"GET /x HTTP/1.1\r\nHost: test\r\n\r\n", @@ -51,7 +70,6 @@ req! { } } - req! { urltest_003, b"GET /x HTTP/1.1\r\nHost: test\r\n\r\n", @@ -65,7 +83,6 @@ req! { } } - req! { urltest_004, b"GET /foo/foo.com HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -79,7 +96,6 @@ req! { } } - req! { urltest_005, b"GET /foo/:foo.com HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -93,7 +109,6 @@ req! { } } - req! { urltest_006, b"GET /foo/foo.com HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -107,7 +122,6 @@ req! { } } - req! { urltest_007, b"GET foo.com HTTP/1.1\r\nHost: \r\n\r\n", @@ -115,7 +129,6 @@ req! { |_r| {} } - req! { urltest_008, b"GET /%20b%20?%20d%20 HTTP/1.1\r\nHost: f\r\n\r\n", @@ -129,7 +142,6 @@ req! { } } - req! { urltest_009, b"GET x x HTTP/1.1\r\nHost: \r\n\r\n", @@ -137,7 +149,6 @@ req! { |_r| {} } - req! { urltest_010, b"GET /c HTTP/1.1\r\nHost: f\r\n\r\n", @@ -151,7 +162,6 @@ req! { } } - req! { urltest_011, b"GET /c HTTP/1.1\r\nHost: f\r\n\r\n", @@ -165,7 +175,6 @@ req! { } } - req! { urltest_012, b"GET /c HTTP/1.1\r\nHost: f\r\n\r\n", @@ -179,7 +188,6 @@ req! { } } - req! { urltest_013, b"GET /c HTTP/1.1\r\nHost: f\r\n\r\n", @@ -193,7 +201,6 @@ req! { } } - req! { urltest_014, b"GET /c HTTP/1.1\r\nHost: f\r\n\r\n", @@ -207,7 +214,6 @@ req! { } } - req! { urltest_015, b"GET /foo/bar HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -221,7 +227,6 @@ req! { } } - req! { urltest_016, b"GET /foo/bar HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -235,7 +240,6 @@ req! { } } - req! { urltest_017, b"GET /foo/:foo.com/ HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -249,7 +253,6 @@ req! { } } - req! { urltest_018, b"GET /foo/:foo.com/ HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -263,7 +266,6 @@ req! { } } - req! { urltest_019, b"GET /foo/: HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -277,7 +279,6 @@ req! { } } - req! { urltest_020, b"GET /foo/:a HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -291,7 +292,6 @@ req! { } } - req! { urltest_021, b"GET /foo/:/ HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -305,7 +305,6 @@ req! { } } - req! { urltest_022, b"GET /foo/:/ HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -319,7 +318,6 @@ req! { } } - req! { urltest_023, b"GET /foo/: HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -333,7 +331,6 @@ req! { } } - req! { urltest_024, b"GET /foo/bar HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -347,7 +344,6 @@ req! { } } - req! { urltest_025, b"GET /foo/bar HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -361,7 +357,6 @@ req! { } } - req! { urltest_026, b"GET /foo/bar HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -375,7 +370,6 @@ req! { } } - req! { urltest_027, b"GET /foo/bar HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -389,7 +383,6 @@ req! { } } - req! { urltest_028, b"GET /foo/bar HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -403,7 +396,6 @@ req! { } } - req! { urltest_029, b"GET /foo/:23 HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -417,7 +409,6 @@ req! { } } - req! { urltest_030, b"GET /:23 HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -431,7 +422,6 @@ req! { } } - req! { urltest_031, b"GET /foo/:: HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -445,7 +435,6 @@ req! { } } - req! { urltest_032, b"GET /foo/::23 HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -459,7 +448,6 @@ req! { } } - req! { urltest_033, b"GET /d HTTP/1.1\r\nHost: c\r\n\r\n", @@ -473,7 +461,6 @@ req! { } } - req! { urltest_034, b"GET /foo/:@c:29 HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -487,7 +474,6 @@ req! { } } - req! { urltest_035, b"GET //@ HTTP/1.1\r\nHost: foo.com\r\n\r\n", @@ -501,7 +487,6 @@ req! { } } - req! { urltest_036, b"GET /b:c/d@foo.com/ HTTP/1.1\r\nHost: a\r\n\r\n", @@ -515,7 +500,6 @@ req! { } } - req! { urltest_037, b"GET /bar.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -529,7 +513,6 @@ req! { } } - req! { urltest_038, b"GET /////// HTTP/1.1\r\nHost: \r\n\r\n", @@ -543,7 +526,6 @@ req! { } } - req! { urltest_039, b"GET ///////bar.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -557,7 +539,6 @@ req! { } } - req! { urltest_040, b"GET //:///// HTTP/1.1\r\nHost: \r\n\r\n", @@ -571,7 +552,6 @@ req! { } } - req! { urltest_041, b"GET /foo HTTP/1.1\r\nHost: \r\n\r\n", @@ -585,7 +565,6 @@ req! { } } - req! { urltest_042, b"GET /bar HTTP/1.1\r\nHost: foo\r\n\r\n", @@ -599,7 +578,6 @@ req! { } } - req! { urltest_043, b"GET /path;a??e HTTP/1.1\r\nHost: foo\r\n\r\n", @@ -613,7 +591,6 @@ req! { } } - req! { urltest_044, b"GET /abcd?efgh?ijkl HTTP/1.1\r\nHost: foo\r\n\r\n", @@ -627,7 +604,6 @@ req! { } } - req! { urltest_045, b"GET /abcd HTTP/1.1\r\nHost: foo\r\n\r\n", @@ -641,7 +617,6 @@ req! { } } - req! { urltest_046, b"GET /foo/[61:24:74]:98 HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -655,7 +630,6 @@ req! { } } - req! { urltest_047, b"GET /foo/[61:27]/:foo HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -669,7 +643,6 @@ req! { } } - req! { urltest_048, b"GET /example.com/ HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -683,7 +656,6 @@ req! { } } - req! { urltest_049, b"GET /example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -697,7 +669,6 @@ req! { } } - req! { urltest_050, b"GET /example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -711,7 +682,6 @@ req! { } } - req! { urltest_051, b"GET /example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -725,7 +695,6 @@ req! { } } - req! { urltest_052, b"GET /example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -739,7 +708,6 @@ req! { } } - req! { urltest_053, b"GET /example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -753,7 +721,6 @@ req! { } } - req! { urltest_054, b"GET /example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -767,7 +734,6 @@ req! { } } - req! { urltest_055, b"GET /foo/example.com/ HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -781,7 +747,6 @@ req! { } } - req! { urltest_056, b"GET example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -795,7 +760,6 @@ req! { } } - req! { urltest_057, b"GET example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -809,7 +773,6 @@ req! { } } - req! { urltest_058, b"GET example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -823,7 +786,6 @@ req! { } } - req! { urltest_059, b"GET example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -837,7 +799,6 @@ req! { } } - req! { urltest_060, b"GET example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -851,7 +812,6 @@ req! { } } - req! { urltest_061, b"GET /a/b/c HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -865,7 +825,6 @@ req! { } } - req! { urltest_062, b"GET /a/%20/c HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -879,7 +838,6 @@ req! { } } - req! { urltest_063, b"GET /a%2fc HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -893,7 +851,6 @@ req! { } } - req! { urltest_064, b"GET /a/%2f/c HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -907,7 +864,6 @@ req! { } } - req! { urltest_065, b"GET /foo/bar HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -921,7 +877,6 @@ req! { } } - req! { urltest_066, b"GET text/html,test HTTP/1.1\r\nHost: \r\n\r\n", @@ -935,7 +890,6 @@ req! { } } - req! { urltest_067, b"GET 1234567890 HTTP/1.1\r\nHost: \r\n\r\n", @@ -949,7 +903,6 @@ req! { } } - req! { urltest_068, b"GET /c:/foo/bar.html HTTP/1.1\r\nHost: \r\n\r\n", @@ -963,7 +916,6 @@ req! { } } - req! { urltest_069, b"GET /c:////foo/bar.html HTTP/1.1\r\nHost: \r\n\r\n", @@ -977,7 +929,6 @@ req! { } } - req! { urltest_070, b"GET /C:/foo/bar HTTP/1.1\r\nHost: \r\n\r\n", @@ -991,7 +942,6 @@ req! { } } - req! { urltest_071, b"GET /C:/foo/bar HTTP/1.1\r\nHost: \r\n\r\n", @@ -1005,7 +955,6 @@ req! { } } - req! { urltest_072, b"GET /C:/foo/bar HTTP/1.1\r\nHost: \r\n\r\n", @@ -1019,7 +968,6 @@ req! { } } - req! { urltest_073, b"GET /file HTTP/1.1\r\nHost: server\r\n\r\n", @@ -1033,7 +981,6 @@ req! { } } - req! { urltest_074, b"GET /file HTTP/1.1\r\nHost: server\r\n\r\n", @@ -1047,7 +994,6 @@ req! { } } - req! { urltest_075, b"GET /file HTTP/1.1\r\nHost: server\r\n\r\n", @@ -1061,7 +1007,6 @@ req! { } } - req! { urltest_076, b"GET /foo/bar.txt HTTP/1.1\r\nHost: \r\n\r\n", @@ -1075,7 +1020,6 @@ req! { } } - req! { urltest_077, b"GET /home/me HTTP/1.1\r\nHost: \r\n\r\n", @@ -1089,7 +1033,6 @@ req! { } } - req! { urltest_078, b"GET /test HTTP/1.1\r\nHost: \r\n\r\n", @@ -1103,7 +1046,6 @@ req! { } } - req! { urltest_079, b"GET /test HTTP/1.1\r\nHost: \r\n\r\n", @@ -1117,7 +1059,6 @@ req! { } } - req! { urltest_080, b"GET /tmp/mock/test HTTP/1.1\r\nHost: \r\n\r\n", @@ -1131,7 +1072,6 @@ req! { } } - req! { urltest_081, b"GET /tmp/mock/test HTTP/1.1\r\nHost: \r\n\r\n", @@ -1145,7 +1085,6 @@ req! { } } - req! { urltest_082, b"GET /foo HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1159,7 +1098,6 @@ req! { } } - req! { urltest_083, b"GET /.foo HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1173,7 +1111,6 @@ req! { } } - req! { urltest_084, b"GET /foo/ HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1187,7 +1124,6 @@ req! { } } - req! { urltest_085, b"GET /foo/ HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1201,7 +1137,6 @@ req! { } } - req! { urltest_086, b"GET /foo/ HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1215,7 +1150,6 @@ req! { } } - req! { urltest_087, b"GET /foo/ HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1229,7 +1163,6 @@ req! { } } - req! { urltest_088, b"GET /foo/..bar HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1243,7 +1176,6 @@ req! { } } - req! { urltest_089, b"GET /foo/ton HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1257,7 +1189,6 @@ req! { } } - req! { urltest_090, b"GET /a HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1271,7 +1202,6 @@ req! { } } - req! { urltest_091, b"GET /ton HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1285,7 +1215,6 @@ req! { } } - req! { urltest_092, b"GET /foo/ HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1299,7 +1228,6 @@ req! { } } - req! { urltest_093, b"GET /foo/%2e%2 HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1313,7 +1241,6 @@ req! { } } - req! { urltest_094, b"GET /%2e.bar HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1327,7 +1254,6 @@ req! { } } - req! { urltest_095, b"GET // HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1341,7 +1267,6 @@ req! { } } - req! { urltest_096, b"GET /foo/ HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1355,7 +1280,6 @@ req! { } } - req! { urltest_097, b"GET /foo/bar/ HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1369,7 +1293,6 @@ req! { } } - req! { urltest_098, b"GET /foo HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1383,7 +1306,6 @@ req! { } } - req! { urltest_099, b"GET /%20foo HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1397,7 +1319,6 @@ req! { } } - req! { urltest_100, b"GET /foo% HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1411,7 +1332,6 @@ req! { } } - req! { urltest_101, b"GET /foo%2 HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1425,7 +1345,6 @@ req! { } } - req! { urltest_102, b"GET /foo%2zbar HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1439,7 +1358,6 @@ req! { } } - req! { urltest_103, b"GET /foo%2%C3%82%C2%A9zbar HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1453,7 +1371,6 @@ req! { } } - req! { urltest_104, b"GET /foo%41%7a HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1467,7 +1384,6 @@ req! { } } - req! { urltest_105, b"GET /foo%C2%91%91 HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1481,7 +1397,6 @@ req! { } } - req! { urltest_106, b"GET /foo%00%51 HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1495,7 +1410,6 @@ req! { } } - req! { urltest_107, b"GET /(%28:%3A%29) HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1509,7 +1423,6 @@ req! { } } - req! { urltest_108, b"GET /%3A%3a%3C%3c HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1523,7 +1436,6 @@ req! { } } - req! { urltest_109, b"GET /foobar HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1537,7 +1449,6 @@ req! { } } - req! { urltest_110, b"GET //foo//bar HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1551,7 +1462,6 @@ req! { } } - req! { urltest_111, b"GET /%7Ffp3%3Eju%3Dduvgw%3Dd HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1565,7 +1475,6 @@ req! { } } - req! { urltest_112, b"GET /@asdf%40 HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1579,7 +1488,6 @@ req! { } } - req! { urltest_113, b"GET /%E4%BD%A0%E5%A5%BD%E4%BD%A0%E5%A5%BD HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1593,7 +1501,6 @@ req! { } } - req! { urltest_114, b"GET /%E2%80%A5/foo HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1607,7 +1514,6 @@ req! { } } - req! { urltest_115, b"GET /%EF%BB%BF/foo HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1621,7 +1527,6 @@ req! { } } - req! { urltest_116, b"GET /%E2%80%AE/foo/%E2%80%AD/bar HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -1635,7 +1540,6 @@ req! { } } - req! { urltest_117, b"GET /foo?bar=baz HTTP/1.1\r\nHost: www.google.com\r\n\r\n", @@ -1649,7 +1553,6 @@ req! { } } - req! { urltest_118, b"GET /foo?bar=baz HTTP/1.1\r\nHost: www.google.com\r\n\r\n", @@ -1663,7 +1566,6 @@ req! { } } - req! { urltest_119, b"GET test HTTP/1.1\r\nHost: \r\n\r\n", @@ -1677,7 +1579,6 @@ req! { } } - req! { urltest_120, b"GET /foo%2Ehtml HTTP/1.1\r\nHost: www\r\n\r\n", @@ -1691,7 +1592,6 @@ req! { } } - req! { urltest_121, b"GET /foo/html HTTP/1.1\r\nHost: www\r\n\r\n", @@ -1705,7 +1605,6 @@ req! { } } - req! { urltest_122, b"GET /foo HTTP/1.1\r\nHost: www.google.com\r\n\r\n", @@ -1719,7 +1618,6 @@ req! { } } - req! { urltest_123, b"GET /example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -1733,7 +1631,6 @@ req! { } } - req! { urltest_124, b"GET /example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -1747,7 +1644,6 @@ req! { } } - req! { urltest_125, b"GET /example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -1761,7 +1657,6 @@ req! { } } - req! { urltest_126, b"GET /example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -1775,7 +1670,6 @@ req! { } } - req! { urltest_127, b"GET /example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -1789,7 +1683,6 @@ req! { } } - req! { urltest_128, b"GET /example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -1803,7 +1696,6 @@ req! { } } - req! { urltest_129, b"GET example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -1817,7 +1709,6 @@ req! { } } - req! { urltest_130, b"GET example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -1831,7 +1722,6 @@ req! { } } - req! { urltest_131, b"GET example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -1845,7 +1735,6 @@ req! { } } - req! { urltest_132, b"GET example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -1859,7 +1748,6 @@ req! { } } - req! { urltest_133, b"GET example.com/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -1873,7 +1761,6 @@ req! { } } - req! { urltest_134, b"GET /test.txt HTTP/1.1\r\nHost: www.example.com\r\n\r\n", @@ -1887,7 +1774,6 @@ req! { } } - req! { urltest_135, b"GET /test.txt HTTP/1.1\r\nHost: www.example.com\r\n\r\n", @@ -1901,7 +1787,6 @@ req! { } } - req! { urltest_136, b"GET /test.txt HTTP/1.1\r\nHost: www.example.com\r\n\r\n", @@ -1915,7 +1800,6 @@ req! { } } - req! { urltest_137, b"GET /test.txt HTTP/1.1\r\nHost: www.example.com\r\n\r\n", @@ -1929,7 +1813,6 @@ req! { } } - req! { urltest_138, b"GET /aaa/test.txt HTTP/1.1\r\nHost: www.example.com\r\n\r\n", @@ -1943,7 +1826,6 @@ req! { } } - req! { urltest_139, b"GET /test.txt HTTP/1.1\r\nHost: www.example.com\r\n\r\n", @@ -1957,7 +1839,6 @@ req! { } } - req! { urltest_140, b"GET /%E4%B8%AD/test.txt HTTP/1.1\r\nHost: www.example.com\r\n\r\n", @@ -1971,7 +1852,6 @@ req! { } } - req! { urltest_141, b"GET /... HTTP/1.1\r\nHost: \r\n\r\n", @@ -1985,7 +1865,6 @@ req! { } } - req! { urltest_142, b"GET /a HTTP/1.1\r\nHost: \r\n\r\n", @@ -1999,7 +1878,6 @@ req! { } } - req! { urltest_143, b"GET /%EF%BF%BD?%EF%BF%BD HTTP/1.1\r\nHost: x\r\n\r\n", @@ -2013,7 +1891,6 @@ req! { } } - req! { urltest_144, b"GET /bar HTTP/1.1\r\nHost: example.com\r\n\r\n", @@ -2027,7 +1904,6 @@ req! { } } - req! { urltest_145, b"GET test HTTP/1.1\r\nHost: \r\n\r\n", @@ -2041,7 +1917,6 @@ req! { } } - req! { urltest_146, b"GET x@x.com HTTP/1.1\r\nHost: \r\n\r\n", @@ -2055,7 +1930,6 @@ req! { } } - req! { urltest_147, b"GET , HTTP/1.1\r\nHost: \r\n\r\n", @@ -2069,7 +1943,6 @@ req! { } } - req! { urltest_148, b"GET blank HTTP/1.1\r\nHost: \r\n\r\n", @@ -2083,7 +1956,6 @@ req! { } } - req! { urltest_149, b"GET test?test HTTP/1.1\r\nHost: \r\n\r\n", @@ -2097,7 +1969,6 @@ req! { } } - req! { urltest_150, b"GET /%60%7B%7D?`{} HTTP/1.1\r\nHost: h\r\n\r\n", @@ -2112,7 +1983,6 @@ req! { } - req! { urltest_151, b"GET /?%27 HTTP/1.1\r\nHost: host\r\n\r\n", @@ -2126,7 +1996,6 @@ req! { } } - req! { urltest_152, b"GET /?' HTTP/1.1\r\nHost: host\r\n\r\n", @@ -2140,7 +2009,6 @@ req! { } } - req! { urltest_153, b"GET /some/path HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -2154,7 +2022,6 @@ req! { } } - req! { urltest_154, b"GET /smth HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -2168,7 +2035,6 @@ req! { } } - req! { urltest_155, b"GET /some/path HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -2182,7 +2048,6 @@ req! { } } - req! { urltest_156, b"GET /pa/i HTTP/1.1\r\nHost: \r\n\r\n", @@ -2196,7 +2061,6 @@ req! { } } - req! { urltest_157, b"GET /i HTTP/1.1\r\nHost: ho\r\n\r\n", @@ -2210,7 +2074,6 @@ req! { } } - req! { urltest_158, b"GET /pa/i HTTP/1.1\r\nHost: \r\n\r\n", @@ -2224,7 +2087,6 @@ req! { } } - req! { urltest_159, b"GET /i HTTP/1.1\r\nHost: \r\n\r\n", @@ -2238,7 +2100,6 @@ req! { } } - req! { urltest_160, b"GET /i HTTP/1.1\r\nHost: ho\r\n\r\n", @@ -2252,7 +2113,6 @@ req! { } } - req! { urltest_161, b"GET /i HTTP/1.1\r\nHost: \r\n\r\n", @@ -2266,7 +2126,6 @@ req! { } } - req! { urltest_162, b"GET /i HTTP/1.1\r\nHost: \r\n\r\n", @@ -2280,7 +2139,6 @@ req! { } } - req! { urltest_163, b"GET /i HTTP/1.1\r\nHost: ho\r\n\r\n", @@ -2294,7 +2152,6 @@ req! { } } - req! { urltest_164, b"GET /i HTTP/1.1\r\nHost: \r\n\r\n", @@ -2308,7 +2165,6 @@ req! { } } - req! { urltest_165, b"GET /pa/pa?i HTTP/1.1\r\nHost: \r\n\r\n", @@ -2322,7 +2178,6 @@ req! { } } - req! { urltest_166, b"GET /pa?i HTTP/1.1\r\nHost: ho\r\n\r\n", @@ -2336,7 +2191,6 @@ req! { } } - req! { urltest_167, b"GET /pa/pa?i HTTP/1.1\r\nHost: \r\n\r\n", @@ -2350,7 +2204,6 @@ req! { } } - req! { urltest_168, b"GET sd HTTP/1.1\r\nHost: \r\n\r\n", @@ -2364,7 +2217,6 @@ req! { } } - req! { urltest_169, b"GET sd/sd HTTP/1.1\r\nHost: \r\n\r\n", @@ -2378,7 +2230,6 @@ req! { } } - req! { urltest_170, b"GET /pa/pa HTTP/1.1\r\nHost: \r\n\r\n", @@ -2392,7 +2243,6 @@ req! { } } - req! { urltest_171, b"GET /pa HTTP/1.1\r\nHost: ho\r\n\r\n", @@ -2406,7 +2256,6 @@ req! { } } - req! { urltest_172, b"GET /pa/pa HTTP/1.1\r\nHost: \r\n\r\n", @@ -2420,7 +2269,6 @@ req! { } } - req! { urltest_173, b"GET /x HTTP/1.1\r\nHost: %C3%B1\r\n\r\n", @@ -2434,7 +2282,6 @@ req! { } } - req! { urltest_174, b"GET \\.\\./ HTTP/1.1\r\n\r\n", @@ -2446,7 +2293,6 @@ req! { } } - req! { urltest_175, b"GET :a@example.net HTTP/1.1\r\nHost: \r\n\r\n", @@ -2460,7 +2306,6 @@ req! { } } - req! { urltest_176, b"GET %NBD HTTP/1.1\r\nHost: \r\n\r\n", @@ -2474,7 +2319,6 @@ req! { } } - req! { urltest_177, b"GET %1G HTTP/1.1\r\nHost: \r\n\r\n", @@ -2488,7 +2332,6 @@ req! { } } - req! { urltest_178, b"GET /relative_import.html HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n", @@ -2502,7 +2345,6 @@ req! { } } - req! { urltest_179, b"GET /?foo=%7B%22abc%22 HTTP/1.1\r\nHost: facebook.com\r\n\r\n", @@ -2516,7 +2358,6 @@ req! { } } - req! { urltest_180, b"GET /jqueryui@1.2.3 HTTP/1.1\r\nHost: localhost\r\n\r\n", @@ -2530,7 +2371,6 @@ req! { } } - req! { urltest_181, b"GET /path?query HTTP/1.1\r\nHost: host\r\n\r\n", @@ -2544,7 +2384,6 @@ req! { } } - req! { urltest_182, b"GET /foo/bar?a=b&c=d HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -2558,7 +2397,6 @@ req! { } } - req! { urltest_183, b"GET /foo/bar??a=b&c=d HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -2572,7 +2410,6 @@ req! { } } - req! { urltest_184, b"GET /foo/bar HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -2586,7 +2423,6 @@ req! { } } - req! { urltest_185, b"GET /baz?qux HTTP/1.1\r\nHost: foo.bar\r\n\r\n", @@ -2600,7 +2436,6 @@ req! { } } - req! { urltest_186, b"GET /baz?qux HTTP/1.1\r\nHost: foo.bar\r\n\r\n", @@ -2614,7 +2449,6 @@ req! { } } - req! { urltest_187, b"GET /baz?qux HTTP/1.1\r\nHost: foo.bar\r\n\r\n", @@ -2628,7 +2462,6 @@ req! { } } - req! { urltest_188, b"GET /baz?qux HTTP/1.1\r\nHost: foo.bar\r\n\r\n", @@ -2642,7 +2475,6 @@ req! { } } - req! { urltest_189, b"GET /baz?qux HTTP/1.1\r\nHost: foo.bar\r\n\r\n", @@ -2656,7 +2488,6 @@ req! { } } - req! { urltest_190, b"GET /C%3A/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -2670,7 +2501,6 @@ req! { } } - req! { urltest_191, b"GET /C%7C/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -2684,7 +2514,6 @@ req! { } } - req! { urltest_192, b"GET /C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/pix/submit.gif HTTP/1.1\r\nHost: \r\n\r\n", @@ -2698,7 +2527,6 @@ req! { } } - req! { urltest_193, b"GET /C:/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -2712,7 +2540,6 @@ req! { } } - req! { urltest_194, b"GET /C:/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -2726,7 +2553,6 @@ req! { } } - req! { urltest_195, b"GET /d: HTTP/1.1\r\nHost: \r\n\r\n", @@ -2740,7 +2566,6 @@ req! { } } - req! { urltest_196, b"GET /d:/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -2754,7 +2579,6 @@ req! { } } - req! { urltest_197, b"GET /test?test HTTP/1.1\r\nHost: \r\n\r\n", @@ -2768,7 +2592,6 @@ req! { } } - req! { urltest_198, b"GET /test?test HTTP/1.1\r\nHost: \r\n\r\n", @@ -2782,7 +2605,6 @@ req! { } } - req! { urltest_199, b"GET /test?x HTTP/1.1\r\nHost: \r\n\r\n", @@ -2796,7 +2618,6 @@ req! { } } - req! { urltest_200, b"GET /test?x HTTP/1.1\r\nHost: \r\n\r\n", @@ -2810,7 +2631,6 @@ req! { } } - req! { urltest_201, b"GET /test?test HTTP/1.1\r\nHost: \r\n\r\n", @@ -2824,7 +2644,6 @@ req! { } } - req! { urltest_202, b"GET /test?test HTTP/1.1\r\nHost: \r\n\r\n", @@ -2838,7 +2657,6 @@ req! { } } - req! { urltest_203, b"GET /?fox HTTP/1.1\r\nHost: \r\n\r\n", @@ -2852,7 +2670,6 @@ req! { } } - req! { urltest_204, b"GET /localhost//cat HTTP/1.1\r\nHost: \r\n\r\n", @@ -2866,7 +2683,6 @@ req! { } } - req! { urltest_205, b"GET /localhost//cat HTTP/1.1\r\nHost: \r\n\r\n", @@ -2880,7 +2696,6 @@ req! { } } - req! { urltest_206, b"GET /mouse HTTP/1.1\r\nHost: \r\n\r\n", @@ -2894,7 +2709,6 @@ req! { } } - req! { urltest_207, b"GET /pig HTTP/1.1\r\nHost: \r\n\r\n", @@ -2908,7 +2722,6 @@ req! { } } - req! { urltest_208, b"GET /pig HTTP/1.1\r\nHost: \r\n\r\n", @@ -2922,7 +2735,6 @@ req! { } } - req! { urltest_209, b"GET /pig HTTP/1.1\r\nHost: \r\n\r\n", @@ -2936,7 +2748,6 @@ req! { } } - req! { urltest_210, b"GET /localhost//pig HTTP/1.1\r\nHost: lion\r\n\r\n", @@ -2950,7 +2761,6 @@ req! { } } - req! { urltest_211, b"GET /rooibos HTTP/1.1\r\nHost: tea\r\n\r\n", @@ -2964,7 +2774,6 @@ req! { } } - req! { urltest_212, b"GET /?chai HTTP/1.1\r\nHost: tea\r\n\r\n", @@ -2978,7 +2787,6 @@ req! { } } - req! { urltest_213, b"GET /C: HTTP/1.1\r\nHost: \r\n\r\n", @@ -2992,7 +2800,6 @@ req! { } } - req! { urltest_214, b"GET /C: HTTP/1.1\r\nHost: \r\n\r\n", @@ -3006,7 +2813,6 @@ req! { } } - req! { urltest_215, b"GET /C: HTTP/1.1\r\nHost: \r\n\r\n", @@ -3020,7 +2826,6 @@ req! { } } - req! { urltest_216, b"GET /C:/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -3034,7 +2839,6 @@ req! { } } - req! { urltest_217, b"GET /C:/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -3048,7 +2852,6 @@ req! { } } - req! { urltest_218, b"GET /C:/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -3062,7 +2865,6 @@ req! { } } - req! { urltest_219, b"GET /dir/C HTTP/1.1\r\nHost: host\r\n\r\n", @@ -3076,7 +2878,6 @@ req! { } } - req! { urltest_220, b"GET /dir/C|a HTTP/1.1\r\nHost: host\r\n\r\n", @@ -3090,7 +2891,6 @@ req! { } } - req! { urltest_221, b"GET /c:/foo/bar HTTP/1.1\r\nHost: \r\n\r\n", @@ -3104,7 +2904,6 @@ req! { } } - req! { urltest_222, b"GET /c:/foo/bar HTTP/1.1\r\nHost: \r\n\r\n", @@ -3118,7 +2917,6 @@ req! { } } - req! { urltest_223, b"GET /c:/foo/bar HTTP/1.1\r\nHost: \r\n\r\n", @@ -3132,7 +2930,6 @@ req! { } } - req! { urltest_224, b"GET /c:/foo/bar HTTP/1.1\r\nHost: \r\n\r\n", @@ -3146,7 +2943,6 @@ req! { } } - req! { urltest_225, b"GET /C:/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -3160,7 +2956,6 @@ req! { } } - req! { urltest_226, b"GET /C:/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -3174,7 +2969,6 @@ req! { } } - req! { urltest_227, b"GET /C:/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -3188,7 +2982,6 @@ req! { } } - req! { urltest_228, b"GET /C:/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -3202,7 +2995,6 @@ req! { } } - req! { urltest_229, b"GET /C:/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -3216,7 +3008,6 @@ req! { } } - req! { urltest_230, b"GET /?q=v HTTP/1.1\r\nHost: \r\n\r\n", @@ -3230,7 +3021,6 @@ req! { } } - req! { urltest_231, b"GET ?x HTTP/1.1\r\nHost: %C3%B1\r\n\r\n", @@ -3244,7 +3034,6 @@ req! { } } - req! { urltest_232, b"GET ?x HTTP/1.1\r\nHost: %C3%B1\r\n\r\n", @@ -3258,7 +3047,6 @@ req! { } } - req! { urltest_233, b"GET // HTTP/1.1\r\nHost: \r\n\r\n", @@ -3272,7 +3060,6 @@ req! { } } - req! { urltest_234, b"GET //x/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -3286,7 +3073,6 @@ req! { } } - req! { urltest_235, b"GET /someconfig;mode=netascii HTTP/1.1\r\nHost: foobar.com\r\n\r\n", @@ -3300,7 +3086,6 @@ req! { } } - req! { urltest_236, b"GET /Index.ut2 HTTP/1.1\r\nHost: 10.10.10.10\r\n\r\n", @@ -3314,7 +3099,6 @@ req! { } } - req! { urltest_237, b"GET /0?baz=bam&qux=baz HTTP/1.1\r\nHost: somehost\r\n\r\n", @@ -3328,7 +3112,6 @@ req! { } } - req! { urltest_238, b"GET /sup HTTP/1.1\r\nHost: host\r\n\r\n", @@ -3342,7 +3125,6 @@ req! { } } - req! { urltest_239, b"GET /foo/bar.git HTTP/1.1\r\nHost: github.com\r\n\r\n", @@ -3356,7 +3138,6 @@ req! { } } - req! { urltest_240, b"GET /channel?passwd HTTP/1.1\r\nHost: myserver.com\r\n\r\n", @@ -3370,7 +3151,6 @@ req! { } } - req! { urltest_241, b"GET /foo.bar.org?type=TXT HTTP/1.1\r\nHost: fw.example.org\r\n\r\n", @@ -3384,7 +3164,6 @@ req! { } } - req! { urltest_242, b"GET /ou=People,o=JNDITutorial HTTP/1.1\r\nHost: localhost\r\n\r\n", @@ -3398,7 +3177,6 @@ req! { } } - req! { urltest_243, b"GET /foo/bar HTTP/1.1\r\nHost: github.com\r\n\r\n", @@ -3412,7 +3190,6 @@ req! { } } - req! { urltest_244, b"GET ietf:rfc:2648 HTTP/1.1\r\nHost: \r\n\r\n", @@ -3426,7 +3203,6 @@ req! { } } - req! { urltest_245, b"GET joe@example.org,2001:foo/bar HTTP/1.1\r\nHost: \r\n\r\n", @@ -3440,7 +3216,6 @@ req! { } } - req! { urltest_246, b"GET /path HTTP/1.1\r\nHost: H%4fSt\r\n\r\n", @@ -3454,7 +3229,6 @@ req! { } } - req! { urltest_247, b"GET https://example.com:443/ HTTP/1.1\r\nHost: \r\n\r\n", @@ -3468,7 +3242,6 @@ req! { } } - req! { urltest_248, b"GET d3958f5c-0777-0845-9dcf-2cb28783acaf HTTP/1.1\r\nHost: \r\n\r\n", @@ -3482,7 +3255,6 @@ req! { } } - req! { urltest_249, b"GET /test?%22 HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -3496,7 +3268,6 @@ req! { } } - req! { urltest_250, b"GET /test HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -3510,7 +3281,6 @@ req! { } } - req! { urltest_251, b"GET /test?%3C HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -3524,7 +3294,6 @@ req! { } } - req! { urltest_252, b"GET /test?%3E HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -3538,7 +3307,6 @@ req! { } } - req! { urltest_253, b"GET /test?%E2%8C%A3 HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -3552,7 +3320,6 @@ req! { } } - req! { urltest_254, b"GET /test?%23%23 HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -3566,7 +3333,6 @@ req! { } } - req! { urltest_255, b"GET /test?%GH HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -3580,7 +3346,6 @@ req! { } } - req! { urltest_256, b"GET /test?a HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -3594,7 +3359,6 @@ req! { } } - req! { urltest_257, b"GET /test?a HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -3608,7 +3372,6 @@ req! { } } - req! { urltest_258, b"GET /test-a-colon-slash.html HTTP/1.1\r\nHost: \r\n\r\n", @@ -3622,7 +3385,6 @@ req! { } } - req! { urltest_259, b"GET /test-a-colon-slash-slash.html HTTP/1.1\r\nHost: \r\n\r\n", @@ -3636,7 +3398,6 @@ req! { } } - req! { urltest_260, b"GET /test-a-colon-slash-b.html HTTP/1.1\r\nHost: \r\n\r\n", @@ -3650,7 +3411,6 @@ req! { } } - req! { urltest_261, b"GET /test-a-colon-slash-slash-b.html HTTP/1.1\r\nHost: b\r\n\r\n", @@ -3664,7 +3424,6 @@ req! { } } - req! { urltest_262, b"GET /test?a HTTP/1.1\r\nHost: example.org\r\n\r\n", @@ -3678,7 +3437,6 @@ req! { } } - req! { urltest_nvidia, b"GET /nvidia_web_services/controller.gfeclientcontent.php/com.nvidia.services.GFEClientContent.getShieldReady/{\"gcV\":\"2.2.2.0\",\"dID\":\"1341\",\"osC\":\"6.20\",\"is6\":\"1\",\"lg\":\"1033\",\"GFPV\":\"389.08\",\"isO\":\"1\",\"sM\":\"16777216\"} HTTP/1.0\r\nHost: gfwsl.geforce.com\r\n\r\n", @@ -3691,3 +3449,16 @@ req! { assert_eq!(req.headers[0].value, b"gfwsl.geforce.com"); } } + +res! { + response_nocr, + b"HTTP/1.0 200\nContent-type: text/html\n\n", + |res| { + assert_eq!(res.version.unwrap(), 0); + assert_eq!(res.code.unwrap(), 200); + assert_eq!(res.reason.unwrap(), ""); + assert_eq!(res.headers.len(), 1); + assert_eq!(res.headers[0].name, "Content-type"); + assert_eq!(res.headers[0].value, b"text/html"); + } +}