From 4962722869fa5640234386cdfbd851163628b0d5 Mon Sep 17 00:00:00 2001 From: Daniel Sharifi Date: Tue, 29 Oct 2024 13:13:19 +0100 Subject: [PATCH 1/4] Added method to config --- src/async_impl/client.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/async_impl/client.rs b/src/async_impl/client.rs index 318217836..bc4f2e36c 100644 --- a/src/async_impl/client.rs +++ b/src/async_impl/client.rs @@ -145,6 +145,8 @@ struct Config { #[cfg(feature = "http2")] http2_max_frame_size: Option, #[cfg(feature = "http2")] + http2_max_header_list_size: Option, + #[cfg(feature = "http2")] http2_keep_alive_interval: Option, #[cfg(feature = "http2")] http2_keep_alive_timeout: Option, @@ -246,6 +248,8 @@ impl ClientBuilder { #[cfg(feature = "http2")] http2_max_frame_size: None, #[cfg(feature = "http2")] + http2_max_header_list_size: None, + #[cfg(feature = "http2")] http2_keep_alive_interval: None, #[cfg(feature = "http2")] http2_keep_alive_timeout: None, @@ -741,6 +745,9 @@ impl ClientBuilder { if let Some(http2_max_frame_size) = config.http2_max_frame_size { builder.http2_max_frame_size(http2_max_frame_size); } + if let Some(http2_max_header_list_size_kib) = config.http2_max_header_list_size { + builder.http2_max_header_list_size(http2_max_header_list_size_kib); + } if let Some(http2_keep_alive_interval) = config.http2_keep_alive_interval { builder.http2_keep_alive_interval(http2_keep_alive_interval); } @@ -1308,6 +1315,16 @@ impl ClientBuilder { self } + /// Sets the maximum size of received header frames for HTTP2. + /// + /// Default is currently 16KB, but can change. + #[cfg(feature = "http2")] + #[cfg_attr(docsrs, doc(cfg(feature = "http2")))] + pub fn http2_max_header_list_size(mut self, max_header_size_bytes: u32) -> ClientBuilder { + self.config.http2_max_header_list_size = Some(max_header_size_bytes); + self + } + /// Sets an interval for HTTP2 Ping frames should be sent to keep a connection alive. /// /// Pass `None` to disable HTTP2 keep-alive. From c323b594f872ca459035353ff7c271d5b87177db Mon Sep 17 00:00:00 2001 From: Daniel Sharifi Date: Tue, 29 Oct 2024 13:27:58 +0100 Subject: [PATCH 2/4] Add the method to `sync` client builder --- src/blocking/client.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/blocking/client.rs b/src/blocking/client.rs index 7b5cafff1..fe7574689 100644 --- a/src/blocking/client.rs +++ b/src/blocking/client.rs @@ -502,6 +502,15 @@ impl ClientBuilder { self.with_inner(|inner| inner.http2_max_frame_size(sz)) } + /// Sets the maximum size of received header frames for HTTP2. + /// + /// Default is currently 16KB, but can change. + #[cfg(feature = "http2")] + #[cfg_attr(docsrs, doc(cfg(feature = "http2")))] + pub fn http2_max_header_list_size(self, max_header_size_bytes: u32) -> ClientBuilder { + self.with_inner(|inner| inner.http2_max_header_list_size(max_header_size_bytes)) + } + /// This requires the optional `http3` feature to be /// enabled. #[cfg(feature = "http3")] From e556695eb1b2c7644ae5ef30d511b53128fc2d59 Mon Sep 17 00:00:00 2001 From: Daniel Sharifi Date: Tue, 29 Oct 2024 13:40:10 +0100 Subject: [PATCH 3/4] Remove kib suffix --- src/async_impl/client.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/async_impl/client.rs b/src/async_impl/client.rs index bc4f2e36c..65e53ae26 100644 --- a/src/async_impl/client.rs +++ b/src/async_impl/client.rs @@ -745,8 +745,8 @@ impl ClientBuilder { if let Some(http2_max_frame_size) = config.http2_max_frame_size { builder.http2_max_frame_size(http2_max_frame_size); } - if let Some(http2_max_header_list_size_kib) = config.http2_max_header_list_size { - builder.http2_max_header_list_size(http2_max_header_list_size_kib); + if let Some(http2_max_header_list_size) = config.http2_max_header_list_size { + builder.http2_max_header_list_size(http2_max_header_list_size); } if let Some(http2_keep_alive_interval) = config.http2_keep_alive_interval { builder.http2_keep_alive_interval(http2_keep_alive_interval); From ddddde1eec17460d63bb9c4145e6615e3804f2be Mon Sep 17 00:00:00 2001 From: Daniel Sharifi Date: Tue, 29 Oct 2024 16:39:42 +0100 Subject: [PATCH 4/4] Bump hyper util to 0.1.10 --- Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 9f8af88ef..39ff48424 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -122,7 +122,7 @@ encoding_rs = { version = "0.8", optional = true } http-body = "1" http-body-util = "0.1" hyper = { version = "1.1", features = ["http1", "client"] } -hyper-util = { version = "0.1.3", features = ["http1", "client", "client-legacy", "tokio"] } +hyper-util = { version = "0.1.10", features = ["http1", "client", "client-legacy", "tokio"] } h2 = { version = "0.4", optional = true } once_cell = "1.18" log = "0.4.17" @@ -173,7 +173,7 @@ futures-channel = { version = "0.3", optional = true } [target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies] env_logger = "0.10" hyper = { version = "1.1.0", default-features = false, features = ["http1", "http2", "client", "server"] } -hyper-util = { version = "0.1.3", features = ["http1", "http2", "client", "client-legacy", "server-auto", "tokio"] } +hyper-util = { version = "0.1.10", features = ["http1", "http2", "client", "client-legacy", "server-auto", "tokio"] } serde = { version = "1.0", features = ["derive"] } libflate = "2.1" brotli_crate = { package = "brotli", version = "6.0.0" }