Commit Graph

16 Commits

Author SHA1 Message Date
Yuki Okushi cffe5d271e
http: add h1 write buffer size setting (#3986)
Co-authored-by: Nicolas Grondin <ngrondin78@gmail.com>
2026-04-18 13:22:45 +09:00
Yuki Okushi 10609f749d
actix-http: linger after early responses (#3985)
Co-authored-by: Ophir LOJKINE <contact@ophir.dev>
2026-04-18 12:46:44 +09:00
Yuki Okushi 11872101a3
fix(http): drain unread body if chunked and dropped payload (#3936)
fix(http): drain unready body if chunked and dropped payload
2026-02-18 16:46:16 +09:00
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
Rob Ede 79a38e0628
apply standard formatting 2023-07-17 02:38:12 +01:00
Rob Ede 115701eb86
prepare awc release 3.1.1 2023-02-26 03:34:47 +00:00
Rob Ede 29bd6a1dd5
fix version requirement for futures_util 2022-12-18 01:34:48 +00:00
Rob Ede cc7145d41d
rust 1.64 clippy run (#2891) 2022-09-25 20:54:17 +01:00
Rob Ede 264a703d94
revert broken fix in #2624 (#2779)
* revert broken fix in #2624

* update changelog
2022-06-11 13:43:13 +01:00
Rob Ede 5ca42df89a
fix stuck connection when handler doesn't read payload (#2624) 2022-02-03 07:03:39 +00:00
Rob Ede 3200de3f34
fix request head timeout (#2611) 2022-01-31 17:30:34 +00:00
Rob Ede cc9ba162f7
add late request dispatcher test 2022-01-27 17:00:07 +00:00
Rob Ede 37799df978
add basic dispatcher test 2022-01-27 06:42:54 +00:00
Rob Ede 3ae4f0a629
add keep-alive dispatcher tests 2022-01-27 06:29:46 +00:00
Rob Ede 14a4f325d3
move dispatcher tests to own file 2022-01-27 06:06:55 +00:00