1
0
mirror of https://github.com/fafhrd91/actix-web synced 2025-03-04 16:02:47 +01:00

3612 Commits

Author SHA1 Message Date
Rob Ede
82b2786d6b
replace unsafe content length implementation 2020-02-16 14:31:05 +00:00
Masayuki Nagamachi
6ab7cfa2be
Remove descriptions about undefined uds feature from docs () 2020-02-16 04:18:31 +09:00
Yuki Okushi
9b3f7248a8
Merge pull request from actix/JohnTitor-patch-1
Disable coverage for PRs
2020-02-14 08:18:09 +09:00
Yuki Okushi
a1835d6510
Disable coverage for PRs 2020-02-14 07:31:29 +09:00
Yuki Okushi
4484b3f66e
Merge pull request from actix/bye-travis
Use Actions fully
2020-02-12 05:54:32 +09:00
Yuki Okushi
cde3ae5f61 Remove Travis config 2020-02-08 05:36:11 +09:00
Yuki Okushi
7d40b66300 Add some Actions workflows 2020-02-08 04:28:34 +09:00
Yuki Okushi
63730c1f73
Merge pull request from JohnTitor/fix-warnings
Fix warnings
2020-02-08 04:17:04 +09:00
Yuki Okushi
53ff3ad099 More ignore test causes timeout 2020-02-08 02:20:01 +09:00
Yuki Okushi
6406f56ca2 Fix/suppress warnings 2020-02-08 02:20:01 +09:00
zero-systems
728b944360
Extensions module improvement and tests. ()
* replace get.is_some to contains_key

* Add tests

* remove unnecessary box cast

* fix missing uints

* asserts fix

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-02-07 16:08:25 +09:00
Levi Notik
3851a377df
Fix minor grammatical errors () 2020-02-07 03:00:22 +09:00
Aaron Hill
fe13789345
Use Pin<Box<S>> in BodyStream and SizedStream ()
Fixes 

A better fix would be to change `MessageBody` to take a `Pin<&mut
Self>`, rather than a `Pin<&mut Self>`. This will avoid requiring the
use of `Box` for all consumers by allowing the caller to determine how
to pin the `MessageBody` implementation (e.g. via stack pinning).

However, doing so is a breaking change that will affect every user of
`MessageBody`. By pinning the inner stream ourselves, we can fix the
undefined behavior without breaking the API.

I've included @sebzim4500's reproduction case as a new test case.
However, due to the nature of undefined behavior, this could pass (and
not segfault) even if underlying issue were to regress.

Unfortunately, until  is resolved,
it's not even possible to write a Miri test that will pass when the bug
is fixed.

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-31 09:39:34 +09:00
Aaron Hill
3033f187d2
Enforce safety of downcast_ref at compile time. ()
* Enforce safety of `downcast_ref` at compile time.

The safety of `downcast_ref` requires that `__private_get_type_id__` not
be overriden by callers, since the returned `TypeId` is used to check if
the cast is safe. However, all trait methods in Rust are public, so
users can override `__private_get_type_id__` despite it being
`#[doc(hidden)]`.

This commit makes `__private_get_type_id__` return a type with a private
constructor, ensuring that the only possible implementation is the
default implementation. A more detailed explanation is provided in the
comments added to the file.

Note that the standard library was affected by this type of issue with
the `Error::type_id` function: see https://blog.rust-lang.org/2019/05/14/Rust-1.34.2.html#whats-in-1.34.2-stable

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-30 23:43:35 +09:00
Aaron Hill
276a5a3ee4
Replace UnsafeCell with Cell in DateServiceInner ()
* Replace `UnsafeCell` with `Cell` in `DateServiceInner`

This ensures that it's impossible to cause undefined behavior by
accidentally violating Rust's aliasing rules (e.g. passing a closure to
`set_date` which ends up invoking `reset` or `update` on the inner
`DateServiceInner`).

There might be a tiny amount of overhead from copying the `Option<(Date,
Instant)>` rather than taking a reference, but it shouldn't be
measurable.

Since the wrapped type is `Copy`, a `Cell` can be used, avoiding the
runtime overhead of a `RefCell`.

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-29 21:05:08 +09:00
Andrey Kutejko
664f9a8b2d
Long lasting auto-prolonged session ()
Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-29 10:26:39 +09:00
Yuki Okushi
c73c2dc12c
Don't use cache in Windows CI () 2020-01-29 09:00:04 +09:00
kevinpoitra
e634e64847 Upgrade time to 0.2.5 ()
* Use `OffsetDateTime` instead of `PrimitiveDateTime`

* Parse time strings with `PrimitiveDateTime::parse` instead of `OffsetDateTime::parse`

* Remove unused `time` dependency from actix-multipart

* Fix a few errors with time related tests from the `time` upgrade

* Implement logic to convert a RFC 850 two-digit year into a full length year, and organize time parsing related functions

* Upgrade `time` to 0.2.2

* Correctly parse C's asctime time format using time 0.2's new format patterns

* Update CHANGES.md

* Use `time` without any of its deprecated functions

* Enforce a UTC time offset when converting an `OffsetDateTime` into a Header value

* Use the more readable version of `Duration::seconds(0)`, `Duration::zero()`

* Remove unneeded conversion of time::Duration to std::time::Duration

* Use `OffsetDateTime::as_seconds_f64` instead of manually calculating the amount of seconds from nanoseconds

* Replace a few additional instances of `Duration::seconds(0)` with `Duration::zero()`

* Truncate any nanoseconds from a supplied `Duration` within `Cookie::set_max_age` to ensure two Cookies with the same amount whole seconds equate to one another

* Fix the actix-http:🍪:do_not_panic_on_large_max_ages test

* Convert `Cookie::max_age` and `Cookie::expires` examples to `time` 0.2

Mainly minor  changes. Type inference can be used alongside the new
`time::parse` method, such that the type doesn't need to be specified.
This will be useful if a refactoring takes place that changes the type.
There are also new macros, which are used where possible.

One change that is not immediately obvious, in `HttpDate`, there was an
unnecessary conditional. As the time crate allows for negative durations
(and can perform arithmetic with such), the if/else can be removed
entirely.

Time v0.2.3 also has some bug fixes, which is why I am not using a more
general v0.2 in Cargo.toml.

v0.2.3 has been yanked, as it was backwards imcompatible. This version
reverts the breaking change, while still supporting rustc back to
1.34.0.

* Add missing `time::offset` macro import

* Fix type confusion when using `time::parse` followed by `using_offset`

* Update `time` to 0.2.5

* Update CHANGES.md

Co-authored-by: Jacob Pratt <the.z.cuber@gmail.com>
2020-01-28 20:44:22 +09:00
Kai Ren
cdba30d45f Skip empty chucks for BodyStream and SizedStream ()
* Skip empty chucks for BodyStream and SizedStream when streaming response ()

* Fix tests to fail on previous implementation

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-28 18:28:09 +09:00
Aaron Hill
74dcc7366d Remove several uses of Pin::new_unchecked ()
Most of the relevant struct already had a `#[pin_project]` attribute,
but it wasn't being used.

The remaining uses of `Pin::new_unchecked` all involve going from a
`&mut T` to a `Pin<&mut T>`, without directly observing a `Pin<&mut T>`
first. As such, they cannot be replaced by `pin_project`

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-28 12:35:51 +09:00
Aaron Hill
d137a8635b Replace Pin::new_unchecked with #[pin_project] in tuple_from_req! ()
Using some module trickery, we can generate a tuple struct for each
invocation of the macro. This allows us to use `pin_project` to project
through to the tuple fields, removing the need to use
`Pin::new_unchecked`

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-28 10:45:25 +09:00
Yuki Okushi
a2d4ff157e
Update call_service documentation ()
Co-authored-by: Christian Battaglia <christian.d.battaglia@gmail.com>
2020-01-28 08:09:46 +09:00
Andrey Torsunov
71d11644a7 Add ability to name a handler function as 'config' ()
* eliminate handler naming restrictions 

* Update actix-web-codegen/CHANGES.md

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-26 07:22:40 +09:00
Maxim Vorobjov
8888520d83 Add benchmark for full stack request lifecycle ()
* add benchmark for full stack request lifecycle

* add direct service benchmarks

* fix newline

* add cloneable service benchmarks

* remove cloneable bench experiments + cargo fmt

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-25 08:05:25 +09:00
Yuki Okushi
cf3577550c
Tweak caches ()
* Try to use `cargo-cache`

* Tweak issue template
2020-01-25 02:27:13 +09:00
Maxim Vorobjov
58844874a0 Fixing convert UnsafeCell to RefCell in CloneableService ()
Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-24 14:51:38 +09:00
cetra3
78f24dda03 Initial Issue template ()
* Initial Issue template

* First round of changes for the bug report

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-24 07:32:34 +09:00
godofdream
e17b3accb9 Remove codecoverage for tests and examples ()
* Ignore Tests & Examples for CodeCoverage

Ignore Tests & Examples for CodeCoverage
2020-01-24 05:10:02 +09:00
Yuki Okushi
c6fa007e72
Fix vcpkg cache () 2020-01-23 11:27:34 +09:00
Rob Ede
a3287948d1 allow explicit SameSite=None cookies ()
fixes 
2020-01-23 10:08:23 +09:00
Yuki Okushi
2e9ab0625e
Tweak actions ()
* Add benchmark action

* Fix Windows build
2020-01-23 06:23:53 +09:00
Yuki Okushi
3a5b62b550
Add dependencies instruction () 2020-01-16 23:17:17 +09:00
Adam Kewley
412e54ce10 Fixed documentation typo for actix-files () 2020-01-15 11:09:58 -08:00
Peter Hall
bca41f8d40 Changes to Cors builder ()
Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-11 04:53:17 +09:00
Jacob Brown
7c974ee668 Update doc comment for HttpRequest::app_data ()
* update doc comment for `HttpRequest::app_data`

* add `no_run` to doc comment

* add `ignore` to doc comment

* Update src/request.rs

Co-Authored-By: Yuki Okushi <huyuumi.dev@gmail.com>

Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2020-01-11 03:55:20 +09:00
linkmauve
abb462ef85 Replace sha1 dependency with sha-1 ()
* Replace sha1 dependency with sha-1

This other crate is being maintained, and it offers better performances
when using the `asm` feature (especially [on
AArch64](https://github.com/RustCrypto/hashes/pull/97)).

* Update CHANGES.md with the sha-1 migration

* Add a test for hash_key()
2020-01-11 02:34:31 +09:00
Nikolay Kim
e66312b664 add extra constraints 2020-01-10 11:36:59 +06:00
Nikolay Kim
39f4b2b39e Merge branch 'master' of github.com:actix/actix-web identity-v0.2.1 2020-01-10 11:28:58 +06:00
Nikolay Kim
f6ff056b8a Fix panic with already borrowed: BorrowMutError 2020-01-10 11:26:54 +06:00
Yuki Okushi
51ab4fb73d
Tweak actions to use cache and not to be stuck on the way () 2020-01-10 03:30:45 +09:00
linkmauve
f5fd6bc49f Fix actix-http examples ()
Fix actix-http examples
2020-01-07 00:15:04 +09:00
Jeremy Wright
2803fcbe22 Small grammaritical update to lib.rs () 2020-01-03 08:45:17 +06:00
Nikolay Kim
67793c5d92 add ssl feature migration 2019-12-30 21:22:04 +06:00
Jonathan Brookins
bcb5086c91 Added 2.0.0 rustls feature name change () 2019-12-30 21:16:04 +06:00
wojciechkepka
7bd2270290 Fix link to example in readme.md ()
* Fix link to example in readme.md

* Add links to openssl and rustls examples

* Rustls should be uppercase
2019-12-26 19:42:07 +09:00
Nikolay Kim
a4ad5e6b69 update timeouts for test server 2019-12-25 20:52:20 +04:00
Nikolay Kim
6db909a3e7 update migration web-v2.0.0 2019-12-25 20:27:30 +04:00
Nikolay Kim
642ae161c0 prep actix-web release 2019-12-25 20:21:00 +04:00
Nikolay Kim
7b3c99b933 prep actix-framed release framed-v0.3.0 2019-12-25 20:17:22 +04:00
Nikolay Kim
f86ce0390e allow to specify multi pattern for resources 2019-12-25 20:14:44 +04:00