From d4d68ae585c18eb18ec55ed5a95d52818fce51bf Mon Sep 17 00:00:00 2001 From: Martin Algesten Date: Sat, 30 Mar 2019 11:29:26 +0100 Subject: [PATCH] fix parse error when no status text. close #4 --- src/response.rs | 7 +------ src/test/simple.rs | 12 ++++++++++++ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/response.rs b/src/response.rs index a426e26..d854527 100644 --- a/src/response.rs +++ b/src/response.rs @@ -457,18 +457,13 @@ fn parse_status_line(line: &str) -> Result<((usize, usize), u16), Error> { let index1 = http_version.len(); let status = split.next().ok_or_else(|| Error::BadStatus)?; - if status.len() < 3 { + if status.len() < 2 { return Err(Error::BadStatus); } let index2 = index1 + status.len(); let status = status.parse::().map_err(|_| Error::BadStatus)?; - let status_text = split.next().ok_or_else(|| Error::BadStatus)?; - if status_text.is_empty() { - return Err(Error::BadStatus); - } - Ok(((index1, index2), status)) } diff --git a/src/test/simple.rs b/src/test/simple.rs index 000f0f3..fe4c2c8 100644 --- a/src/test/simple.rs +++ b/src/test/simple.rs @@ -138,3 +138,15 @@ fn non_ascii_header() { assert_eq!(resp.status(), 500); assert_eq!(resp.status_text(), "Bad Header"); } + +#[test] +pub fn no_status_text() { + // this one doesn't return the status text + // let resp = get("https://www.okex.com/api/spot/v3/products") + test::set_handler("/no_status_text", |_unit| { + test::make_response(200, "", vec![], vec![]) + }); + let resp = get("test://host/no_status_text").call(); + assert!(resp.ok()); + assert_eq!(resp.status(), 200); +}