Compare commits

...

7 Commits

Author SHA1 Message Date
Armand Mégrot 4f6811b320
Merge afad1db343 into 8996198f2c 2025-08-28 12:58:44 +02:00
Rob Ede 8996198f2c
chore: require h2 versions after MadeYouReset fix 2025-08-26 23:59:57 +01:00
Rob Ede 68624ec63b
chore: remove now-useless docs.rs flags 2025-08-26 23:51:22 +01:00
Rob Ede afad1db343
Update CHANGES.md 2024-06-11 02:25:08 +01:00
Rob Ede 1098d0deb7
Merge branch 'master' into master 2024-06-11 02:24:26 +01:00
Armand Mégrot 5dcad17a61
Merge branch 'master' into master 2023-09-12 10:51:58 +02:00
Armand Mégrot 5f1a4607e5
fix response body when no content-length header 2023-05-20 13:30:46 +02:00
8 changed files with 21 additions and 10 deletions

View File

@ -38,6 +38,10 @@
- Add `error::InvalidStatusCode` re-export.
### Fixed
- Fix `MessageType::set_headers` not using the correct payload decoder when Transfer-Encoding and Content-Length are absent.
## 3.7.0
### Added

View File

@ -17,7 +17,6 @@ edition.workspace = true
rust-version.workspace = true
[package.metadata.docs.rs]
rustdoc-args = ["--cfg", "docsrs"]
features = [
"http2",
"ws",
@ -119,7 +118,7 @@ tokio-util = { version = "0.7", features = ["io", "codec"] }
tracing = { version = "0.1.30", default-features = false, features = ["log"] }
# http2
h2 = { version = "0.3.26", optional = true }
h2 = { version = "0.3.27", optional = true }
# websockets
base64 = { version = "0.22", optional = true }

View File

@ -391,8 +391,20 @@ impl MessageType for ResponseHead {
// switching protocol or connect
PayloadType::Stream(PayloadDecoder::eof())
} else {
// for HTTP/1.0 read to eof and close connection
if msg.version == Version::HTTP_10 {
let body_allowed = match msg.status.as_u16() {
100..=199 => false,
204 => false,
304 => false,
_ => true,
};
// for HTTP/1.0 and HTTP/1.1 read to eof and close connection
if msg.version == Version::HTTP_11 && body_allowed {
if let Some(ConnectionType::Close) = msg.conn_type() {
PayloadType::Payload(PayloadDecoder::eof())
} else {
PayloadType::None
}
} else if msg.version == Version::HTTP_10 {
msg.set_connection_type(ConnectionType::Close);
PayloadType::Payload(PayloadDecoder::eof())
} else {

View File

@ -11,7 +11,6 @@ edition.workspace = true
rust-version.workspace = true
[package.metadata.docs.rs]
rustdoc-args = ["--cfg", "docsrs"]
all-features = true
[lib]

View File

@ -14,7 +14,6 @@ license.workspace = true
edition.workspace = true
[package.metadata.docs.rs]
rustdoc-args = ["--cfg", "docsrs"]
all-features = true
[package.metadata.cargo_check_external_types]

View File

@ -17,7 +17,6 @@ edition.workspace = true
rust-version.workspace = true
[package.metadata.docs.rs]
rustdoc-args = ["--cfg", "docsrs"]
features = [
"macros",
"openssl",

View File

@ -16,7 +16,6 @@ license = "MIT OR Apache-2.0"
edition = "2021"
[package.metadata.docs.rs]
rustdoc-args = ["--cfg", "docsrs"]
features = [
"cookies",
"openssl",
@ -109,7 +108,7 @@ cfg-if = "1"
derive_more = { version = "2", features = ["display", "error", "from"] }
futures-core = { version = "0.3.17", default-features = false, features = ["alloc"] }
futures-util = { version = "0.3.17", default-features = false, features = ["alloc", "sink"] }
h2 = "0.3.26"
h2 = "0.3.27"
http = "0.2.7"
itoa = "1"
log = "0.4"

View File

@ -749,7 +749,7 @@ async fn client_unread_response() {
// awc does not read all bytes unless content-length is specified
let bytes = res.body().await.unwrap();
assert_eq!(bytes, Bytes::from_static(b""));
assert_eq!(bytes, Bytes::from_static(b"welcome!"));
}
#[actix_rt::test]