При большом теле ответа получается ошибка http: socket closed already
Воспроизвести socket closed already:
#[tarantool_test::test]
fn large_response() {
let text = "Hello";
let repetitions = 10000;
let server = server::http(move |_req| {
let response_text = std::iter::repeat(text)
.take(repetitions)
.collect::<Vec<_>>()
.join("");
async { http::Response::new(response_text.into()) }
});
let client = fibreq::ClientBuilder::new().build();
let mut response = client
.get(format!("http://{}/text", server.addr()))
.expect("Failed to create get request.")
.send()
.expect("Failed to send get request.");
let response_length = text.len() * repetitions;
let content_length = response
.content_length()
.expect("Failed to get response content length");
assert_eq!(response_length as u64, content_length);
let text = response.text().expect("Failed to get text");
assert_eq!("Hello", &text[..5]);
}
Если repetitions выставить в 1000 то все ок.
Ошибка выявлена в реузльтате расследования бага в ttc.
Edited by Igor Kuznetsov