From 8b2b755cdecdd21277ebcf8611f8bf028b05cbb1 Mon Sep 17 00:00:00 2001 From: Rob Ede Date: Sat, 6 May 2023 11:37:11 +0100 Subject: [PATCH 1/3] fix guard mod docs --- .github/workflows/ci.yml | 1 - actix-web/CHANGES.md | 5 +++-- actix-web/MIGRATION-4.0.md | 1 - actix-web/src/guard/mod.rs | 7 +++++-- 4 files changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2d0b71616..e0511339d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,7 +101,6 @@ jobs: run: > sudo bash -c "ulimit -Sl 512 && ulimit -Hl 512 && PATH=$PATH:/usr/share/rust/.cargo/bin && RUSTUP_TOOLCHAIN=stable cargo test --lib --tests -p=actix-files --all-features" - rustdoc: name: doc tests runs-on: ubuntu-latest diff --git a/actix-web/CHANGES.md b/actix-web/CHANGES.md index d5989982a..9688370b7 100644 --- a/actix-web/CHANGES.md +++ b/actix-web/CHANGES.md @@ -917,9 +917,9 @@ ### Changed -- Updated actix-web-codegen dependency for access to new `#[route(...)]` multi-method macro. +- Updated `actix-web-codegen` dependency for access to new `#[route(...)]` multi-method macro. - Print non-configured `Data` type when attempting extraction. [#1743] -- Re-export bytes::Buf{Mut} in web module. [#1750] +- Re-export `bytes::Buf{Mut}` in web module. [#1750] - Upgrade `pin-project` to `1.0`. [#1723]: https://github.com/actix/actix-web/pull/1723 @@ -927,6 +927,7 @@ [#1748]: https://github.com/actix/actix-web/pull/1748 [#1750]: https://github.com/actix/actix-web/pull/1750 [#1754]: https://github.com/actix/actix-web/pull/1754 +[#1757]: https://github.com/actix/actix-web/pull/1757 [#1749]: https://github.com/actix/actix-web/pull/1749 ## 3.1.0 - 2020-09-29 diff --git a/actix-web/MIGRATION-4.0.md b/actix-web/MIGRATION-4.0.md index 7b1cfc03b..0f0bd3a53 100644 --- a/actix-web/MIGRATION-4.0.md +++ b/actix-web/MIGRATION-4.0.md @@ -31,7 +31,6 @@ Headings marked with :warning: are **breaking behavioral changes**. They will pr - [Returning `HttpResponse` synchronously](#returning-httpresponse-synchronously) - [`#[actix_web::main]` and `#[tokio::main]`](#actix_webmain-and-tokiomain) - [`web::block`](#webblock) -- ## MSRV diff --git a/actix-web/src/guard/mod.rs b/actix-web/src/guard/mod.rs index 164032bdc..a9173a9d1 100644 --- a/actix-web/src/guard/mod.rs +++ b/actix-web/src/guard/mod.rs @@ -18,6 +18,7 @@ //! There are shortcuts for routes with method guards in the [`web`](crate::web) module: //! [`web::get()`](crate::web::get), [`web::post()`](crate::web::post), etc. The routes created by //! the following calls are equivalent: +//! //! - `web::get()` (recommended form) //! - `web::route().guard(guard::Get())` //! @@ -28,9 +29,11 @@ //! would result in inaccessible routes. See the [`Host`] guard for an example of virtual hosting. //! //! # Examples +//! //! In the following code, the `/guarded` resource has one defined route whose handler will only be -//! called if the request method is `POST` and there is a request header with name and value equal -//! to `x-guarded` and `secret`, respectively. +//! called if the request method is GET or POST and there is a `x-guarded` request header with value +//! equal to `secret`. +//! //! ``` //! use actix_web::{web, http::Method, guard, HttpResponse}; //! From 6fdda45ca371a4905d434d61584a4bc4bc944131 Mon Sep 17 00:00:00 2001 From: Rob Ede Date: Sat, 6 May 2023 11:38:51 +0100 Subject: [PATCH 2/3] update bitflags to v2 --- actix-files/Cargo.toml | 2 +- actix-files/src/named.rs | 1 + actix-http/Cargo.toml | 2 +- actix-http/src/h1/client.rs | 1 + actix-http/src/h1/codec.rs | 1 + actix-http/src/h1/dispatcher.rs | 1 + actix-http/src/message.rs | 1 + actix-http/src/ws/codec.rs | 1 + 8 files changed, 8 insertions(+), 2 deletions(-) diff --git a/actix-files/Cargo.toml b/actix-files/Cargo.toml index 6909c0ef2..41f3b1135 100644 --- a/actix-files/Cargo.toml +++ b/actix-files/Cargo.toml @@ -26,7 +26,7 @@ actix-service = "2" actix-utils = "3" actix-web = { version = "4", default-features = false } -bitflags = "1" +bitflags = "2" bytes = "1" derive_more = "0.99.5" futures-core = { version = "0.3.17", default-features = false, features = ["alloc"] } diff --git a/actix-files/src/named.rs b/actix-files/src/named.rs index 23d3093dc..c10bc00ed 100644 --- a/actix-files/src/named.rs +++ b/actix-files/src/named.rs @@ -29,6 +29,7 @@ use mime_guess::from_path; use crate::{encoding::equiv_utf8_text, range::HttpRange}; bitflags! { + #[derive(Debug, Clone, Copy)] pub(crate) struct Flags: u8 { const ETAG = 0b0000_0001; const LAST_MD = 0b0000_0010; diff --git a/actix-http/Cargo.toml b/actix-http/Cargo.toml index 7c5f07f2d..222a04c8f 100644 --- a/actix-http/Cargo.toml +++ b/actix-http/Cargo.toml @@ -62,7 +62,7 @@ actix-utils = "3" actix-rt = { version = "2.2", default-features = false } ahash = "0.8" -bitflags = "1.2" +bitflags = "2" bytes = "1" bytestring = "1" derive_more = "0.99.5" diff --git a/actix-http/src/h1/client.rs b/actix-http/src/h1/client.rs index 6a0d531d0..f3947dd12 100644 --- a/actix-http/src/h1/client.rs +++ b/actix-http/src/h1/client.rs @@ -16,6 +16,7 @@ use crate::{ }; bitflags! { + #[derive(Debug, Clone, Copy)] struct Flags: u8 { const HEAD = 0b0000_0001; const KEEP_ALIVE_ENABLED = 0b0000_1000; diff --git a/actix-http/src/h1/codec.rs b/actix-http/src/h1/codec.rs index e11f175c9..e1b629146 100644 --- a/actix-http/src/h1/codec.rs +++ b/actix-http/src/h1/codec.rs @@ -14,6 +14,7 @@ use crate::{ }; bitflags! { + #[derive(Debug, Clone, Copy)] struct Flags: u8 { const HEAD = 0b0000_0001; const KEEP_ALIVE_ENABLED = 0b0000_0010; diff --git a/actix-http/src/h1/dispatcher.rs b/actix-http/src/h1/dispatcher.rs index 60660b85b..c2f8ea453 100644 --- a/actix-http/src/h1/dispatcher.rs +++ b/actix-http/src/h1/dispatcher.rs @@ -40,6 +40,7 @@ const HW_BUFFER_SIZE: usize = 1024 * 8; const MAX_PIPELINED_MESSAGES: usize = 16; bitflags! { + #[derive(Debug, Clone, Copy)] pub struct Flags: u8 { /// Set when stream is read for first time. const STARTED = 0b0000_0001; diff --git a/actix-http/src/message.rs b/actix-http/src/message.rs index 7469d74ee..47b128fd0 100644 --- a/actix-http/src/message.rs +++ b/actix-http/src/message.rs @@ -16,6 +16,7 @@ pub enum ConnectionType { } bitflags! { + #[derive(Debug, Clone, Copy)] pub(crate) struct Flags: u8 { const CLOSE = 0b0000_0001; const KEEP_ALIVE = 0b0000_0010; diff --git a/actix-http/src/ws/codec.rs b/actix-http/src/ws/codec.rs index 6a149f9a4..681649a7e 100644 --- a/actix-http/src/ws/codec.rs +++ b/actix-http/src/ws/codec.rs @@ -74,6 +74,7 @@ pub struct Codec { } bitflags! { + #[derive(Debug, Clone, Copy)] struct Flags: u8 { const SERVER = 0b0000_0001; const CONTINUATION = 0b0000_0010; From 17218dc6c88848938cebc560deafbf1c2184fa56 Mon Sep 17 00:00:00 2001 From: moh-eulith <101080211+moh-eulith@users.noreply.github.com> Date: Sun, 7 May 2023 11:13:10 -0400 Subject: [PATCH 3/3] minor optimization: reserve buffer once length is known (ws) (#2950) --- actix-http/src/ws/frame.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/actix-http/src/ws/frame.rs b/actix-http/src/ws/frame.rs index c7e0427ea..dddb03d18 100644 --- a/actix-http/src/ws/frame.rs +++ b/actix-http/src/ws/frame.rs @@ -1,3 +1,4 @@ +use std::cmp::min; use std::convert::TryFrom; use bytes::{Buf, BufMut, BytesMut}; @@ -96,6 +97,10 @@ impl Parser { // not enough data if src.len() < idx + length { + let min_length = min(length, max_size); + if src.capacity() < idx + min_length { + src.reserve(idx + min_length - src.capacity()); + } return Ok(None); }