From 5f5476ceb8bbb49bae82485a219efc7f4959abb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tomasz=20Drwi=C4=99ga?= Date: Mon, 23 Oct 2017 14:02:53 +0200 Subject: [PATCH] Fix parsing of non-utf8 characters. --- devtools/src/http_client.rs | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/devtools/src/http_client.rs b/devtools/src/http_client.rs index 078c33721..0257d86d7 100644 --- a/devtools/src/http_client.rs +++ b/devtools/src/http_client.rs @@ -83,9 +83,17 @@ pub fn request(address: &SocketAddr, request: &str) -> Response { req.set_read_timeout(Some(Duration::from_secs(2))).unwrap(); req.write_all(request.as_bytes()).unwrap(); - let mut response = String::new(); - let _ = req.read_to_string(&mut response); + let mut response = Vec::new(); + loop { + let mut chunk = [0; 32 *1024]; + match req.read(&mut chunk) { + Err(err) => panic!("Unable to read response: {:?}", err), + Ok(0) => break, + Ok(read) => response.extend_from_slice(&chunk[..read]), + } + } + let response = String::from_utf8_lossy(&response).into_owned(); let mut lines = response.lines(); let status = lines.next().expect("Expected a response").to_owned(); let headers_raw = read_block(&mut lines, false);