Skip to content

Commit d4d68ae

Browse files
committed
fix parse error when no status text. close fortanix#4
1 parent 889988b commit d4d68ae

File tree

2 files changed

+13
-6
lines changed

2 files changed

+13
-6
lines changed

src/response.rs

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -457,18 +457,13 @@ fn parse_status_line(line: &str) -> Result<((usize, usize), u16), Error> {
457457
let index1 = http_version.len();
458458

459459
let status = split.next().ok_or_else(|| Error::BadStatus)?;
460-
if status.len() < 3 {
460+
if status.len() < 2 {
461461
return Err(Error::BadStatus);
462462
}
463463
let index2 = index1 + status.len();
464464

465465
let status = status.parse::<u16>().map_err(|_| Error::BadStatus)?;
466466

467-
let status_text = split.next().ok_or_else(|| Error::BadStatus)?;
468-
if status_text.is_empty() {
469-
return Err(Error::BadStatus);
470-
}
471-
472467
Ok(((index1, index2), status))
473468
}
474469

src/test/simple.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,3 +138,15 @@ fn non_ascii_header() {
138138
assert_eq!(resp.status(), 500);
139139
assert_eq!(resp.status_text(), "Bad Header");
140140
}
141+
142+
#[test]
143+
pub fn no_status_text() {
144+
// this one doesn't return the status text
145+
// let resp = get("https://www.okex.com/api/spot/v3/products")
146+
test::set_handler("/no_status_text", |_unit| {
147+
test::make_response(200, "", vec![], vec![])
148+
});
149+
let resp = get("test://host/no_status_text").call();
150+
assert!(resp.ok());
151+
assert_eq!(resp.status(), 200);
152+
}

0 commit comments

Comments
 (0)