* Strip non-address characters from Forwarded for=
This is something of a followup to #2528, which asked for port information to not be included in when it was taken from the local socket.
The header's element may optionally contain port information (https://datatracker.ietf.org/doc/html/rfc7239#section-6).
However, as I understand it, is *supposed* to only contain an IP address, without port (per #2528).
This PR corrects that discrepancy, making it easier to parse the result of this method in application code.
There should not be any compatibility concerns, as anyone parsing the output of would already need to handle both port and portless cases anyway.
* Update CHANGES.md
---------
Co-authored-by: Rob Ede <robjtede@icloud.com>
* actix-test: allow the configuration of the TestServer address
This is useful if you're running (say) Selenium tests against a running TestServer, and the Selenium workers are Docker containers elsewhere in the network.
Not a *particularly* common use case, perhaps, but one that I can attest happens every now and then.
* Update CHANGES.md
* Adjust default listen address to avoid test failures
---------
Co-authored-by: Rob Ede <robjtede@icloud.com>
* add scope proc macro
* Update scope macro code to work with current HttpServiceFactory
* started some test code
* add some unit tests
* code formatting cleanup
* add another test for combining and calling 2 scopes
* format code with formatter
* Update actix-web-codegen/src/lib.rs with comment documentation fix
Co-authored-by: oliver <151407407+kwfn@users.noreply.github.com>
* work in progress. revised procedural macro to change othe macro call
* add tests again. refactor nested code.
* clean up code. fix bugs with route and method attributes with parameters
* clean up for rust fmt
* clean up for rust fmt
* fix out of date comment for scope macro
* sync to master branch by adding test_wrap
* needed to format code
* test: split out scope tests
* test: add negative tests
* chore: move imports back inside (?)
* docs: tweak scope docs
* fix: prevent trailing slashes in scope prefixes
* chore: address clippy lints
---------
Co-authored-by: oliver <151407407+kwfn@users.noreply.github.com>
Co-authored-by: Rob Ede <robjtede@icloud.com>
* feat: add .customize().add_cookie()
* docs: added cookie hint
* fix: added unwrap to test of add_cookie()
* docs: added changelog entry for .customize().add_cookie()
* chore: make append_header infallible
* docs: update changelog
---------
Co-authored-by: Rob Ede <robjtede@icloud.com>
If you're testing that redirects are being properly generated, then it's
useful to not have the client go off on a wild goose chase of its own.
Co-authored-by: Rob Ede <robjtede@icloud.com>
* fix: Do not require actix-router default features from actix-web-codegen
* docs: update changelog
* test: update trybuild stderr
---------
Co-authored-by: Dylan Anthony <dbanty@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>
This allows us to pass these types around in functions, without having
to add `awc` as a direct (dev-)dependency.
Co-authored-by: Rob Ede <robjtede@icloud.com>