Jonas Platte
f791ec3879
Merge branch 'v0.8.x' into jplatte/v0.8.5
2025-09-28 20:46:41 +02:00
Jonas Platte
a1d22f68a5
Release axum 0.8.5 and related crates
axum-extra-v0.10.2
axum-v0.8.5
axum-core-v0.5.3
2025-09-28 20:46:16 +02:00
Jonas Platte
72e820f6fa
Bump nightly for axum-macros ( #3500 )
2025-09-28 20:31:17 +02:00
Jonas Platte
ad2fd5b50b
Update changelogs
2025-09-28 20:26:09 +02:00
Antoine Vandecreme
a0692f9f54
Reject JSON bodies with trailing chars ( #3453 )
2025-09-28 20:25:54 +02:00
tottoto
ae80850223
Update to cargo-deny api version 2 ( #3475 )
2025-09-28 19:41:46 +02:00
Jonas Platte
651cc1e935
Remove unused link def
2025-09-28 19:37:31 +02:00
Jonas Platte
6529158354
Bump Cargo.lock
2025-09-28 19:36:51 +02:00
Jonas Platte
1a7460cd27
ci: Also run for release branches
2025-09-28 19:32:40 +02:00
tottoto
cb8670a94b
Update to tokio-tungstenite 0.28 ( #3497 )
2025-09-28 19:31:58 +02:00
tottoto
0c66493474
axum-extra: Remove unused tower dependency ( #3486 )
2025-09-28 19:30:32 +02:00
Fredrik Park
6f1ed5e0a0
Spelling misstake in Using closure capture ( #3481 )
2025-09-28 19:30:18 +02:00
221ef3795b
websocket: add a wrapper around is_terminated ( #3443 )
...
Co-authored-by: Loic <[email protected] >
Co-authored-by: loikki <[email protected] >
2025-09-28 19:30:07 +02:00
David Mládek
d108c50ce7
axum: add ResponseAxumBodyLayer for mapping response body to axum::body::Body
2025-09-28 19:28:47 +02:00
Jonas Platte
16534439f5
Switch serde dependency to serde_core ( #3477 )
2025-09-28 19:28:32 +02:00
Niclas Klugmann
c40f739cdf
Clarify that AddExtension is not the actual Layer ( #3463 )
2025-09-28 19:25:37 +02:00
Joel Uckelman
aa8f75111a
Add axum_extra::extract::Query::try_from_uri ( #3460 )
...
`axum::extract::Query` has a try_from_uri, which is useful for testing. This adds the same function to `axum_extra::extract::Query`.
2025-09-28 19:25:25 +02:00
reivilibre
b8ae30747c
Document type parameter T on Handler ( #3435 )
...
Signed-off-by: Olivier 'reivilibre <[email protected] >
2025-09-28 19:24:04 +02:00
Glen De Cauwsemaecker
eb3c5418ef
Support custom (binary) data to be written into SSE Event ( #3425 )
2025-09-28 19:24:00 +02:00
Glen De Cauwsemaecker
d88b39897b
Fix ci failures ( #3432 )
2025-09-28 19:22:35 +02:00
Jan Runge
f736e9f24e
Extractors doc: correct linked example section ( #3349 )
2025-09-28 19:22:10 +02:00
Jonas Platte
25549f0ba2
Update minimum Rust version to 1.78 ( #3412 )
2025-09-28 19:22:01 +02:00
Glen De Cauwsemaecker
c1ff1539e3
sse: Add space between duration and : ( #3403 )
2025-09-28 19:20:22 +02:00
Theodore Bjernhed and Theodore Bjernhed
384f393857
Add #[must_use] to types and methods ( #3395 )
...
Co-authored-by: Theodore Bjernhed <[email protected] >
2025-09-28 19:19:54 +02:00
tottoto
3a18eb6108
Update tokio-tungstenite to 0.27 ( #3398 )
2025-09-28 19:19:33 +02:00
Theodore Bjernhed
62586fa492
style: Reorder macro-generated items to fix lints ( #3392 )
2025-09-28 19:18:47 +02:00
zeon
d0d8088be1
New redirect inspection ( #3377 )
2025-09-28 19:18:22 +02:00
Sabrina Jewson
fc50f462e6
Add DefaultBodyLimit::apply ( #3368 )
2025-09-28 19:17:34 +02:00
Jake McGinty
f32223b2e9
Implement OptionalFromRequest for Multipart ( #3220 )
2025-09-28 19:17:02 +02:00
Daniel
756bf0037f
Implement the OptionalFromRequestParts trait for the Host extractor ( #3177 )
2025-09-28 19:16:54 +02:00
Jonas Platte
01ecea0e33
Make clippy happy ( #3350 )
2025-09-28 19:15:42 +02:00
Nano
abe98474e1
Make SSE less dependent on tokio ( #3154 )
2025-09-28 19:12:15 +02:00
Sheroz
8d055800d2
Add axum-rest-api-sample to ECOSYSTEM.md ( #3494 )
2025-09-26 23:43:52 +02:00
tottoto
bf9b43cabe
Update to tokio-tungstenite 0.28 ( #3497 )
2025-09-25 22:09:35 +09:00
Søren Løvborg
9ed1ad69d2
axum: add ListenerExt::limit_connections ( #3489 )
2025-09-23 23:25:36 +02:00
tottoto
50f0082970
axum: Make futures-sink optional dependency ( #3491 )
2025-09-22 23:58:30 +09:00
David Mládek
cc11b5ad7d
axum-extra: gate rejection test behind feature ( #3493 )
2025-09-22 14:18:46 +02:00
tottoto
817aae3d1e
axum-extra: Add link definition for pull request to changelog ( #3492 )
2025-09-22 09:30:03 +02:00
tottoto
4d8a6f6f0f
axum-extra: Make rustversion and serde_core optional dependency ( #3487 )
2025-09-21 06:32:56 +09:00
tottoto
f09f50c50a
axum-extra: Remove unused tower dependency ( #3486 )
2025-09-20 20:57:04 +00:00
tottoto
d184798937
axum-extra: Make axum optional dependency ( #3485 )
2025-09-20 22:50:56 +02:00
Mattia Penati
40e9d7b22a
Add tower-otel to ECOSYSTEM.md ( #3482 )
2025-09-17 11:52:34 +02:00
Fredrik Park
600b16d431
Spelling misstake in Using closure capture ( #3481 )
2025-09-16 22:33:39 +02:00
e43030d051
websocket: add a wrapper around is_terminated ( #3443 )
...
Co-authored-by: Loic <[email protected] >
Co-authored-by: loikki <[email protected] >
2025-09-16 15:54:44 +00:00
othelot
ab593bbab7
routing: omit the Allow header for non-405 method not allowed fallbacks ( #3465 )
2025-09-16 08:29:01 +00:00
Søren Løvborg
1073468163
axum::serve: Enable Hyper request header timeout ( #3478 )
...
It's possible for an HTTP request to get stuck (due to network issues or
malicious clients) halfway through the request line or header, in which
case no amount of timeouts configured by an application using axum/tower
will help, since Hyper hasn't yet handed off the request to the service.
This has two consequences:
- Wasted memory: Up to ~1 MB per connection in the worst case, compared
to the ~2.5 kB used by a regular idle connection.
- A `with_graceful_shutdown` signal will cause the server to stop
accepting new requests, but then hang instead of actually stopping.
This changes axum::serve to configure a Timer for HTTP/1 connections,
which activates Hyper's default timeout (currently 30 seconds).
The timeout applies only to the request line and request header, not the
request body or subsequent response (where axum applications can instead
simply configure a timeout using `tower_http::timeout::TimeoutLayer`).
The timeout does not currently apply to newly opened connections, even
though Hyper's `header_read_timeout` SHOULD apply here too since 1.4.0;
discussion on tokio-rs#2741 suggests a possible TokioIo issue. However, the
graceful shutdown still works as expected for such connections.
The timer is only enabled for HTTP/1 here since similar functionality
does not currently appear to exist for HTTP/2 connections in Hyper.
This is a breaking change for any axum::serve users who currently rely
on being able to begin sending a HTTP/1 request, and then take more than
30 seconds to finish the request line and headers, or rely on keeping
connections idle for 30+ seconds between requests.
2025-09-16 10:19:20 +02:00
David Mládek
5c090dcb3e
axum-extra: make option_layer guarantee that the output body is axum::body::Body
2025-09-14 19:50:04 +02:00
David Mládek
853d7e707a
axum: add ResponseAxumBodyLayer for mapping response body to axum::body::Body
2025-09-14 19:50:04 +02:00
Jonas Platte
4ab8df5e42
Switch serde dependency to serde_core ( #3477 )
2025-09-14 08:49:07 +02:00
K-tecchan
94af9c3262
axum: correct typo in append_allow_header ( #3476 )
2025-09-13 14:27:43 +00:00