asonix
4df9953c86
actix-http: h1: stop pipelining when not reading full requests ( #3721 )
...
* actix-http: h1: stop pipelining when not reading full requests
The existing pipelining behavior of the h1 dispatcher can cause client timeouts
if the entire request body isn't read. It puts the dispatcher into a state where
it refuses to read more (payload dropped) but there are still bytes in the buffer
from the request body.
This solution adds the SHUTDOWN flag in addition to the FINISHED flag
when completing a response when both the following are true:
1. There are no messages in `this.messages`
2. There is still a payload in `this.payload`
This combination implies two things. First, that we have not parsed a
pipelined request after the request we have just responded to. Second,
that the current request payload has not been fed an EOF. Because there
are no pipelined requests, we know that the current request payload
belongs to the request we have just responded to, and because the
request payload has not been fed an EOF, we know we never finished
reading it.
When this occurs, adding the SHUTDOWN flag to the dispatcher triggers a
`flush` and a `poll_shutdown` on the IO resource on the next poll.
* Remove printlns from dispatcher
* Add test that fails without changes & passes with changes
* Add changelog entry for h1 shutdown
---------
Co-authored-by: Rob Ede <robjtede@icloud.com>
Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2025-10-05 01:07:35 +00:00
Thales Fragoso
fde7934243
Add option to allow/disallow half closures in HTTP/1 ( #3777 )
...
* Add ServiceConfigBuilder to facilitate future extensions
Signed-off-by: Thales Fragoso <thales.fragoso@axiros.com>
* Add option to allow/disallow h1 half closures
The default is set to allow, thus reverting a change made in 3.11.1
Signed-off-by: Thales Fragoso <thales.fragoso@axiros.com>
* Add tests for h1 half closures
Signed-off-by: Thales Fragoso <thales.fragoso@axiros.com>
* Comply with clippy
Signed-off-by: Thales Fragoso <thales.fragoso@axiros.com>
* Adjust imports to satisfy fmt
Signed-off-by: Thales Fragoso <thales.fragoso@axiros.com>
---------
Signed-off-by: Thales Fragoso <thales.fragoso@axiros.com>
2025-10-04 23:03:26 +00:00
Yuki Okushi
429ff82a4b
fix: rename doc_auto_cfg feature ( #3787 )
2025-09-29 10:42:56 +00:00
Thales
d3c46537b3
fix(http): Wake Payload when feeding error or EOF ( #3749 )
...
* fix(http): Add failing tests to demonstrate the payload problem
Signed-off-by: Thales Fragoso <thales.fragoso@axiros.com>
* fix(http): Wake Payload when feeding error or eof
Signed-off-by: Thales Fragoso <thales.fragoso@axiros.com>
---------
Signed-off-by: Thales Fragoso <thales.fragoso@axiros.com>
2025-08-29 02:47:03 +00:00
Andrew Scott
c6352005f7
fix: include content-length with bytes payload ( #3695 )
...
* fix: include content-length with bytes payload
* chore: json unit-test patch
* Update doc comment
---------
Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2025-08-24 09:42:11 +00:00
yanyuxing
30f7df5853
fix(actix-http): wake before return pending when read half disconnect and need to shutdown ( #3665 )
2025-08-23 00:56:39 +00:00
Guido Vranken
5f6c84494a
Fix integer overflow in actix_http::ws::Parser::parse ( #3728 )
...
* Fix integer overflow in actix_http::ws::Parser::parse
* Add changelog
---------
Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2025-08-22 06:24:22 +00:00
Rob Ede
7eea3d3657
chore: address clippy lints
2025-05-09 20:21:02 +01:00
Bernard Assan
df0885cf21
Add from_bytes/u8_bytes to dev::Payload ( #3595 )
...
* feat: Add from_bytes/u8_bytes to dev::Payload
This allows convinent construction of Payload from bytes which is
useful in middlewares
closes actix/actix-web#3589
Add doc comment and changelog entry
* implement from<bytes/vec> for payload
---------
Co-authored-by: Rob Ede <robjtede@icloud.com>
2025-03-09 16:40:00 +00:00
dependabot[bot]
9656383646
build(deps): update derive_more requirement from 1 to 2 ( #3571 )
...
* build(deps): update derive_more requirement from 1 to 2
Updates the requirements on [derive_more](https://github.com/JelteF/derive_more ) to permit the latest version.
- [Release notes](https://github.com/JelteF/derive_more/releases )
- [Changelog](https://github.com/JelteF/derive_more/blob/master/CHANGELOG.md )
- [Commits](https://github.com/JelteF/derive_more/compare/v1.0.0...v2.0.1 )
---
updated-dependencies:
- dependency-name: derive_more
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
* refactor: simplify derive_more calls
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rob Ede <robjtede@icloud.com>
2025-02-10 01:27:56 +00:00
Akos Vandra-Meyer
04533a15fa
Add `Extensions::get_or_insert[_with]()` methods ( #3561 )
...
* add get_or_insert and get_or_insert_with for Extensions
* add docs
* fix doctest
* docs: update changelog
* chore: simplify get_or_insert
---------
Co-authored-by: Rob Ede <robjtede@icloud.com>
2025-02-09 22:04:21 +00:00
Rob Ede
ac2a3bb124
refactor: replace ahash with foldhash ( #3483 )
2024-12-29 16:20:00 +00:00
Rob Ede
34327bd221
chore: address clippy warnings
2024-12-29 15:03:43 +00:00
Rob Ede
ec05381f6f
feat: add CLEAR_SITE_DATA header
2024-10-15 07:01:01 +01:00
John Vandenberg
d6bdfac1b9
build(deps): update derive_more to v1.0 ( #3453 )
...
* build(deps): update derive_more to v1.0
* refactor: use from derive module
---------
Co-authored-by: Rob Ede <robjtede@icloud.com>
2024-08-18 14:17:03 +00:00
Rob Ede
538c1bea34
chore: disallow e bindings
2024-08-10 05:15:49 +01:00
Rob Ede
5c6e0e17d3
feat(http): impl FromIter for HeaderMap
2024-07-07 21:16:25 +01:00
Rob Ede
e0e4d1e661
chore: move deny lints to manifests
2024-07-07 03:54:00 +01:00
Rob Ede
763c58445a
test: fix tests based on mime-guess inference
...
relates to https://github.com/abonander/mime_guess/pull/86
2024-06-30 20:28:11 +01:00
Rob Ede
cbb55ba27d
ci: use just for feature combos check
2024-06-20 00:04:35 +01:00
Yury Yarashevich
643d64581a
Fix Rustls 0.22 & 0.23 are limited to 256 handshakes per second. ( #3408 )
2024-06-19 22:34:49 +00:00
Samuel Marks
22593a1532
Re-export `http::status::InvalidStatusCode` ( #3393 )
...
* [actix-http/src/lib.rs] Expose/re-export `http::status::InvalidStatusCode`
* [actix-http/src/error.rs] Re-export `http::status::InvalidStatusCode` ; [actix-http/src/lib.rs] Revert
2024-06-09 05:07:56 +00:00
asonix
4493aa35d0
actix-http::ws: Remove redundant + 4 byte reservation when masked ( #3371 )
...
* actix-http::ws: Remove redundant + 4 byte reservation when masked
* actix-http: Update CHANGES wrt byte fix
* docs: remove changelog entry
---------
Co-authored-by: Rob Ede <robjtede@icloud.com>
2024-06-07 14:41:32 +00:00
asonix
2d035c066e
actix-http: Add rustls 0.23 ( #3361 )
...
Co-authored-by: Rob Ede <robjtede@icloud.com>
2024-05-18 19:22:53 +01:00
Rob Ede
c1a6388614
refactor: address clippy warnings
2024-05-06 06:03:44 +01:00
dependabot[bot]
8c31d137aa
build(deps): bump taiki-e/install-action from 2.26.18 to 2.27.2 ( #3294 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rob Ede <robjtede@icloud.com>
2024-02-19 12:31:10 +00:00
Rob Ede
022b052bd9
chore: clippy
2024-02-12 23:02:45 +00:00
Rob Ede
1e2ef6f92f
perf: remove unnecessary allocation when writing http dates ( #3261 )
2024-02-07 03:47:30 +00:00
Rob Ede
d9b31b80ac
fix: standardize body stream error reporting
2024-02-04 03:11:48 +00:00
Rob Ede
2125aca2c5
Rustls v0.22 support ( #3275 )
2024-02-03 23:55:01 +00:00
SleeplessOne1917
ae7736f134
Implement `From<&HeaderMap>` for `http::HeaderMap` ( #3230 )
...
* Add From impl for header map references
* Add From impl for header map references
* Remove Into<HeaderMap> via http::HeaderMap
* fix changelog
---------
Co-authored-by: SleeplessOne1917 <insomnia-void@protonmail.com>
Co-authored-by: Rob Ede <robjtede@icloud.com>
2024-02-01 12:52:35 +00:00
Rob Ede
a7375b6876
ci: faster cargo-public-api install ( #3255 )
2024-01-22 02:19:19 +00:00
Rob Ede
ac04d80d8e
docs: better docs for peer_addr methods
2024-01-08 15:17:40 +00:00
Rob Ede
d14e98b62b
prevent hang when compressing Sized(0) bodies
...
fixes #3229
2023-12-25 02:27:51 +00:00
Rob Ede
5e5e5d8315
chore: remove allow(uninlined_format_args)
2023-12-16 10:33:00 +00:00
Rob Ede
c7a0af31d3
docs: doc and metadata tweaks
2023-12-16 10:33:00 +00:00
SleeplessOne1917
eefe8b0733
Implement From<HeaderMap> for http::HeaderMap ( #3222 )
...
* Implement From<HeaderMap> for http::HeaderMap
* Update changelog
* Apply clippy fix
* doc tweak
---------
Co-authored-by: SleeplessOne1917 <insomnia-void@protonmail.com>
Co-authored-by: Rob Ede <robjtede@icloud.com>
2023-12-16 10:08:45 +00:00
Paul
2fe5189954
Do not encode zero-sized response bodies ( #3199 )
...
* Do not encode zero-sized response bodies
* Test empty response remains empty after compression
2023-11-26 20:57:19 +00:00
Rob Ede
215a52f565
chore: avoid single char error bindings
2023-09-03 19:09:42 +01:00
Rob Ede
905c30af86
Actix Web Rustls v0.21 support ( #3116 )
2023-08-29 01:11:11 +01:00
Rob Ede
55c15f5bbf
minimum viable rustls v0.21 support ( #3112 )
2023-08-27 00:07:11 +01:00
Rob Ede
146011018e
add payload to_bytes helpers ( #3083 )
2023-07-22 02:02:29 +01:00
Rob Ede
3eb5a059ad
chore: address clippy warnings
2023-07-20 11:42:20 +01:00
Rob Ede
79a38e0628
apply standard formatting
2023-07-17 02:38:12 +01:00
mitsubosh
ce3af777a0
Fix typo ( #3062 )
2023-07-05 16:29:10 +00:00
Rob Ede
241da6e081
update MSRV to 1.65 ( #3059 )
2023-07-02 01:09:15 +01:00
Rob Ede
1072d0dacf
address lints
2023-06-09 15:15:09 +01:00
moh-eulith
17218dc6c8
minor optimization: reserve buffer once length is known (ws) ( #2950 )
2023-05-07 15:13:10 +00:00
Rob Ede
6fdda45ca3
update bitflags to v2
2023-05-06 11:38:51 +01:00
Rob Ede
5e29726c4f
standardize error messages in actix-http
2023-03-13 17:17:02 +00:00