From 5e8f1c338c2a45544359d03ce6ea5a3b0c0a3cfb Mon Sep 17 00:00:00 2001 From: Ronald Chan Date: Mon, 9 Sep 2019 18:24:57 +0800 Subject: [PATCH] fix h2 not using error response (#1080) * fix h2 not using error response * add fix change log * fix h2 service error tests --- CHANGES.md | 3 +++ actix-http/src/h2/dispatcher.rs | 4 ++-- actix-http/tests/test_rustls_server.rs | 4 ++-- actix-http/tests/test_ssl_server.rs | 4 ++-- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 57304d083..f37f8b466 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -5,6 +5,9 @@ * Add `middleware::Conditon` that conditionally enables another middleware +### Fixed + +* h2 will use error response #1080 ## [1.0.7] - 2019-08-29 diff --git a/actix-http/src/h2/dispatcher.rs b/actix-http/src/h2/dispatcher.rs index 69c620e62..888f9065e 100644 --- a/actix-http/src/h2/dispatcher.rs +++ b/actix-http/src/h2/dispatcher.rs @@ -257,8 +257,8 @@ where } } Ok(Async::NotReady) => Ok(Async::NotReady), - Err(_e) => { - let res: Response = Response::InternalServerError().finish(); + Err(e) => { + let res: Response = e.into().into(); let (res, body) = res.replace_body(()); let mut send = send.take().unwrap(); diff --git a/actix-http/tests/test_rustls_server.rs b/actix-http/tests/test_rustls_server.rs index 32b33fce8..b74fd07bf 100644 --- a/actix-http/tests/test_rustls_server.rs +++ b/actix-http/tests/test_rustls_server.rs @@ -454,9 +454,9 @@ fn test_h2_service_error() { }); let response = srv.block_on(srv.sget("/").send()).unwrap(); - assert_eq!(response.status(), http::StatusCode::INTERNAL_SERVER_ERROR); + assert_eq!(response.status(), http::StatusCode::BAD_REQUEST); // read response let bytes = srv.load_body(response).unwrap(); - assert!(bytes.is_empty()); + assert_eq!(bytes, Bytes::from_static(b"error")); } diff --git a/actix-http/tests/test_ssl_server.rs b/actix-http/tests/test_ssl_server.rs index f0c82870d..897d92b37 100644 --- a/actix-http/tests/test_ssl_server.rs +++ b/actix-http/tests/test_ssl_server.rs @@ -449,11 +449,11 @@ fn test_h2_service_error() { }); let response = srv.block_on(srv.sget("/").send()).unwrap(); - assert_eq!(response.status(), StatusCode::INTERNAL_SERVER_ERROR); + assert_eq!(response.status(), StatusCode::BAD_REQUEST); // read response let bytes = srv.load_body(response).unwrap(); - assert!(bytes.is_empty()); + assert_eq!(bytes, Bytes::from_static(b"error")); } #[test]