diff --git a/actix-http/src/responses/head.rs b/actix-http/src/responses/head.rs index 1525321f9..cb47c4b7a 100644 --- a/actix-http/src/responses/head.rs +++ b/actix-http/src/responses/head.rs @@ -240,8 +240,8 @@ mod tests { let _ = stream .write_all(b"GET /camel HTTP/1.1\r\nConnection: Close\r\n\r\n") .unwrap(); - let mut data = vec![0; 256]; - let _ = stream.read(&mut data).unwrap(); + let mut data = vec![]; + let _ = stream.read_to_end(&mut data).unwrap(); assert_eq!(&data[..17], b"HTTP/1.1 200 OK\r\n"); assert!(memmem::find(&data, b"Foo-Bar").is_some()); assert!(memmem::find(&data, b"foo-bar").is_none()); @@ -254,8 +254,8 @@ mod tests { let _ = stream .write_all(b"GET /lower HTTP/1.1\r\nConnection: Close\r\n\r\n") .unwrap(); - let mut data = vec![0; 256]; - let _ = stream.read(&mut data).unwrap(); + let mut data = vec![]; + let _ = stream.read_to_end(&mut data).unwrap(); assert_eq!(&data[..17], b"HTTP/1.1 200 OK\r\n"); assert!(memmem::find(&data, b"Foo-Bar").is_none()); assert!(memmem::find(&data, b"foo-bar").is_some()); diff --git a/actix-http/tests/test_server.rs b/actix-http/tests/test_server.rs index ec4795d8a..6fdfdd5c2 100644 --- a/actix-http/tests/test_server.rs +++ b/actix-http/tests/test_server.rs @@ -196,42 +196,6 @@ async fn test_chunked_payload() { srv.stop().await; } -#[actix_rt::test] -async fn slow_request_close() { - let mut srv = test_server(|| { - HttpService::build() - .client_timeout(200) - .keep_alive(2) - .finish(|_| ok::<_, Infallible>(Response::ok())) - .tcp() - }) - .await; - - let start = Instant::now(); - - let mut stream = net::TcpStream::connect(srv.addr()).unwrap(); - - let mut data = String::new(); - let _ = stream.read_to_string(&mut data).unwrap(); - assert!( - data.starts_with("HTTP/1.1 408 Request Timeout"), - "response was not 408: {}", - data - ); - - let diff = Instant::now().duration_since(start); - - if diff < Duration::from_secs(1) { - // test success - } else if diff < Duration::from_secs(3) { - panic!("request seems to have wrongly timed-out according to keep-alive"); - } else { - panic!("request took way too long to time out"); - } - - srv.stop().await; -} - #[actix_rt::test] async fn slow_request_408() { let mut srv = test_server(|| { diff --git a/keep-alive-bug.txt b/keep-alive-bug.txt deleted file mode 100644 index 4f5fc6a34..000000000 --- a/keep-alive-bug.txt +++ /dev/null @@ -1,135 +0,0 @@ -behavior - -template -======================== -client_timeout 0 -keep_alive 2 - -unchanged -req 1 -req 2 - -set started on first I/O poll -req 1 -req 2 -======================== - -====================================================== -====================================================== - - - - - - - - - -======================== -client_timeout 0 -keep_alive 0 - -unchanged -req 1 OK -req 2 OK (~17s) - -set started on first I/O poll -req 1 OK -req 2 OK (~17s) -======================== -======================== -client_timeout 2000 -keep_alive 0 - -unchanged -req 1 OK -req 2 OK (~17s) - -set started on first I/O poll -req 1 OK -req 2 OK (~17s) -======================== - - -======================== -client_timeout 2000 -keep_alive 2 - -unchanged -req 1 OK -req 2 408 (~7s) - -set started on first I/O poll -req 1 OK -req 2 conn reset (~7s) - -attempt 1 (no good, 408 is broken) -req 1 OK -req 2 OK (~17s) -======================== -======================== -client_timeout 0 -keep_alive 2 - -unchanged -req 1 OK -req 2 408 (~7s) - -set started on first I/O poll -req 1 OK -req 2 conn reset (~7s) - -attempt 1 (no good, 408 is broken) -req 1 OK -req 2 OK (~17s) -======================== - - -======================== -client_timeout 0 -keep_alive Disabled - -unchanged -req 1 OK -req 2 OK (~17s) - -set started on first I/O poll -req 1 conn reset (instant) -req 2 - -======================== -======================== -client_timeout 2000 -keep_alive Disabled - -unchanged -req 1 OK -req 2 OK (~17s) - -set started on first I/O poll -req 1 conn reset (instant) -req 2 - -======================== -======================== -client_timeout 0 -keep_alive OS - -unchanged -req 1 OK -req 2 OK (~17s) - -set started on first I/O poll -req 1 OK -req 2 OK (~17s) -======================== -======================== -client_timeout 0 -keep_alive 60 - -unchanged -req 1 OK -req 2 OK (~17s) - -set started on first I/O poll -req 1 OK -req 2 OK (~17s) -========================