* fix(windows): enable dual-stack IPv6 sockets by default
On Windows, IPV6_V6ONLY defaults to true, so binding to [::] only
accepts IPv6 connections. Set it to false so that IPv6 listeners also
accept IPv4 traffic, matching the default Linux behavior.
* chore: add test
---------
Co-authored-by: Romain Roffé <r2@kyber.media>
Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
* feat(resources-introspection): add support for resource metadata retrieval
* misc: remove debug print
* style: cargo fmt
* fix(guards): replace take_guards with get_guards to prevent guard removal and fix test failures
* ci: downgrade for msrv litemap to version 0.7.4 in justfile
* chore: update changelog and fix docs for CI
* ci: downgrade for msrv zerofrom to version 0.1.5 in justfile
* refactor: improve thread safety and add unit tests for introspection process
* fix(introspection): add conditional arbiter creation for io-uring support
* fix(introspection): add conditional arbiter creation for io-uring support
* refactor(introspection): add GuardDetail enum and remove downcast_ref usage
- Added `GuardDetail` enum to encapsulate various introspection details of a guard.
- Refactored `HttpMethodsExtractor` implementation to use `GuardDetail` instead of `downcast_ref`.
* refactor(introspection): add GuardDetail enum and remove downcast_ref usage
- Added `GuardDetail` enum to encapsulate various introspection details of a guard.
- Refactored `HttpMethodsExtractor` implementation to use `GuardDetail` instead of `downcast_ref`.
* feat(introspection): rename feature from `resources-introspection` to `experimental-introspection`
- Refactored introspection logic.
- Enhanced route introspection to register HTTP methods and guard names.
- Added example for testing the experimental introspection feature.
* fix Cargo.lock
* feat(introspection): enhance introspection feature with detailed route registration and full path tracking
* optimize debug log and apply clippy/fmt suggestions
* feat(introspection): enhance introspection handlers for JSON and plain text responses
* feat(introspection): implement experimental introspection feature with multiple App instances
* Enhance experimental introspection feature with detailed route reporting
- Introduced a new `experimental-introspection` feature that provides comprehensive reports on configured routes, including paths, methods, guards, and resource metadata.
- Added support for reachability hints to identify shadowed or conflicting routes.
- Implemented new endpoints for external resources reporting.
- Updated existing route registration to include detailed introspection data.
- Enhanced guard implementations to provide introspection details.
* Refactor route registration to use RouteInfo struct & cargo clippy
* put all the items behind feature gate
* tweak
* fmt
---------
Co-authored-by: Guillermo Céspedes Tabárez <gcespedes@prexcard.com>
Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
- Set default Content-Type to application/octet-stream for streaming responses
- Respect Content-Length header by automatically calling `no_chunking()` when set
- Resolves issue where Content-Length was ignored in streaming responses
Fixes#2306
---------
Co-authored-by: Yinuo Deng <i@dyn.im>
* Fix: Per discussion in #2958, set `SO_REUSEADDR` only non-Windows platforms.
Add: Tests confirming that only a single webserver instance may
bind to a given address.
* Clean: Lint.
* Clean: another guess at making the formatter happy.
* Clean: More cargo fmt fun. (Running cargo fmt locally doesn't help.)
---------
Co-authored-by: Bryan A. Jones <bjones1@users.noreply.github.com>
Co-authored-by: Rob Ede <robjtede@icloud.com>
* Fix type confusion in some scenarios
When the feature for rustls 0.22 is enabled, and rustls 0.23 is also
present in a project, there suddently exist multiple paths for errors
when building middleware chains due to the use of two consecutive `?`
operators without specifying the intermediate error type.
This commit addresses the issue by removing the first `?`, so that the
first error type will always be known, and the second `?` always has a
well defined implementation.
* Add CHANGES entry about type confusion
* actix-http: add rustls 0.23 support
* actix-http: update ws example, tests for rustls 0.23
* actix-http: add rustls 0.23 to changelog
* Update comments to mention 0.23 instead of 0.22
* awc: add rustls 0.23 support
This also fixes certificate lookup when native-roots is enabled for rustls 0.22.
* awc: update changelog for rustls 0.23
* awc: Add base rustls-0_23 feature without roots to better enable custom config
* actix-test: add rustls-0.23
* actix-test: add rustls 0.23 to changelog
* awc: update changelog with rustls 0.23 tweaks
* actix-web: add rustls 0.23
* Add rustls-0_23 to CI
* Update tls_rustls.rs
* review nits
* review nits part 2
* fix doc test
---------
Co-authored-by: Rob Ede <robjtede@icloud.com>
For intrepid commit message readers:
The choice to add allows for the inlined format args lint instead of actually
inlining them is not very clear because our actual real world MSRV is not clear.
We currently claim 1.60 is our MSRV but this is mainly due to dependencies. I'm
fairly sure that we could support < 1.58 if those deps are outdated in a users
lockfile. We'll remove these allows again at some point soon.