1
0
Fork 0
mirror of https://github.com/actix/actix-web.git synced 2024-05-19 16:58:14 +00:00

Merge branch 'master' into scope_work

This commit is contained in:
Jonathan Lim 2023-11-28 13:50:36 -08:00 committed by GitHub
commit 567deaa3ec
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 54 additions and 7 deletions

View file

@ -45,7 +45,7 @@ jobs:
toolchain: ${{ matrix.version.version }}
- name: Install cargo-hack
uses: taiki-e/install-action@v2.21.17
uses: taiki-e/install-action@v2.21.19
with:
tool: cargo-hack
@ -85,7 +85,7 @@ jobs:
uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
- name: Install cargo-hack
uses: taiki-e/install-action@v2.21.17
uses: taiki-e/install-action@v2.21.19
with:
tool: cargo-hack
@ -106,7 +106,7 @@ jobs:
uses: actions-rust-lang/setup-rust-toolchain@v1.5.0
- name: Install nextest
uses: taiki-e/install-action@v2.21.17
uses: taiki-e/install-action@v2.21.19
with:
tool: nextest

View file

@ -50,7 +50,7 @@ jobs:
toolchain: ${{ matrix.version.version }}
- name: Install cargo-hack
uses: taiki-e/install-action@v2.21.17
uses: taiki-e/install-action@v2.21.19
with:
tool: cargo-hack

View file

@ -23,7 +23,7 @@ jobs:
components: llvm-tools-preview
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@v2.21.17
uses: taiki-e/install-action@v2.21.19
with:
tool: cargo-llvm-cov

View file

@ -6,6 +6,10 @@
- Updated `zstd` dependency to `0.13`.
### Fixed
- Do not encode zero-sized response bodies
## 3.4.0
### Added

View file

@ -52,7 +52,7 @@ impl<B: MessageBody> Encoder<B> {
pub fn response(encoding: ContentEncoding, head: &mut ResponseHead, body: B) -> Self {
// no need to compress an empty body
if matches!(body.size(), BodySize::None) {
if matches!(body.size(), BodySize::None | BodySize::Sized(0)) {
return Self::none();
}

View file

@ -373,7 +373,7 @@ mod tests {
.default_service(web::to(move || {
HttpResponse::Ok()
.insert_header((header::VARY, "x-test"))
.finish()
.body(TEXT_DATA)
}))
})
.await;
@ -429,4 +429,47 @@ mod tests {
assert_successful_identity_res_with_content_type(&res, "image/jpeg");
assert_eq!(test::read_body(res).await, TEXT_DATA.as_bytes());
}
#[actix_rt::test]
async fn prevents_compression_empty() {
let app = test::init_service({
App::new()
.wrap(Compress::default())
.default_service(web::to(move || HttpResponse::Ok().finish()))
})
.await;
let req = test::TestRequest::default()
.insert_header((header::ACCEPT_ENCODING, "gzip"))
.to_request();
let res = test::call_service(&app, req).await;
assert_eq!(res.status(), StatusCode::OK);
assert!(!res.headers().contains_key(header::CONTENT_ENCODING));
assert!(test::read_body(res).await.is_empty());
}
}
#[cfg(feature = "compress-brotli")]
#[cfg(test)]
mod tests_brotli {
use super::*;
use crate::{test, web, App};
#[actix_rt::test]
async fn prevents_compression_empty() {
let app = test::init_service({
App::new()
.wrap(Compress::default())
.default_service(web::to(move || HttpResponse::Ok().finish()))
})
.await;
let req = test::TestRequest::default()
.insert_header((header::ACCEPT_ENCODING, "br"))
.to_request();
let res = test::call_service(&app, req).await;
assert_eq!(res.status(), StatusCode::OK);
assert!(!res.headers().contains_key(header::CONTENT_ENCODING));
assert!(test::read_body(res).await.is_empty());
}
}