From 2cb5b7c08bcac25898347f906f26284b6db82de8 Mon Sep 17 00:00:00 2001 From: ddotthomas Date: Sat, 17 Feb 2024 17:52:32 -0700 Subject: [PATCH 1/3] Added config option to enable the reqwest client adaptive window --- src/config/parser.rs | 4 ++++ src/results/aggregator.rs | 2 ++ src/server/routes/search.rs | 1 + websurfx/config.lua | 2 ++ 4 files changed, 9 insertions(+) diff --git a/src/config/parser.rs b/src/config/parser.rs index 63329c5..dcde182 100644 --- a/src/config/parser.rs +++ b/src/config/parser.rs @@ -30,6 +30,8 @@ pub struct Config { pub logging: bool, /// It stores the option to whether enable or disable debug mode. pub debug: bool, + /// It toggles whether to use adaptive TCP windows + pub adaptive_window: bool, /// It stores all the engine names that were enabled by the user. pub upstream_search_engines: HashMap, /// It stores the time (secs) which controls the server request timeout. @@ -68,6 +70,7 @@ impl Config { let debug: bool = globals.get::<_, bool>("debug")?; let logging: bool = globals.get::<_, bool>("logging")?; + let adaptive_window: bool = globals.get::<_, bool>("adaptive_window")?; if !logging_initialized { set_logging_level(debug, logging); @@ -125,6 +128,7 @@ impl Config { }, logging, debug, + adaptive_window, upstream_search_engines: globals .get::<_, HashMap>("upstream_search_engines")?, request_timeout: globals.get::<_, u8>("request_timeout")?, diff --git a/src/results/aggregator.rs b/src/results/aggregator.rs index e7fc090..2e64817 100644 --- a/src/results/aggregator.rs +++ b/src/results/aggregator.rs @@ -71,6 +71,7 @@ pub async fn aggregate( upstream_search_engines: &[EngineHandler], request_timeout: u8, safe_search: u8, + adaptive_window: bool, ) -> Result> { let client = CLIENT.get_or_init(|| { ClientBuilder::new() @@ -78,6 +79,7 @@ pub async fn aggregate( .https_only(true) .gzip(true) .brotli(true) + .http2_adaptive_window(adaptive_window) .build() .unwrap() }); diff --git a/src/server/routes/search.rs b/src/server/routes/search.rs index 16cfa28..b26e5ac 100644 --- a/src/server/routes/search.rs +++ b/src/server/routes/search.rs @@ -218,6 +218,7 @@ async fn results( .collect::>(), config.request_timeout, safe_search_level, + config.adaptive_window, ) .await? } diff --git a/websurfx/config.lua b/websurfx/config.lua index ce2d609..989fcc0 100644 --- a/websurfx/config.lua +++ b/websurfx/config.lua @@ -14,6 +14,8 @@ rate_limiter = { number_of_requests = 20, -- The number of request that are allowed within a provided time limit. time_limit = 3, -- The time limit in which the quantity of requests that should be accepted. } +-- Set whether the server will use an adaptive/dynamic TCP window size +adaptive_window = true -- ### Search ### -- Filter results based on different levels. The levels provided are: From 6e2a5861d887c6a0b95ebd3b7aa987f181843d11 Mon Sep 17 00:00:00 2001 From: ddotthomas Date: Tue, 20 Feb 2024 12:11:33 -0700 Subject: [PATCH 2/3] Change adaptive window config name Co-authored-by: neon_arch --- websurfx/config.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/websurfx/config.lua b/websurfx/config.lua index 989fcc0..32b20da 100644 --- a/websurfx/config.lua +++ b/websurfx/config.lua @@ -14,8 +14,8 @@ rate_limiter = { number_of_requests = 20, -- The number of request that are allowed within a provided time limit. time_limit = 3, -- The time limit in which the quantity of requests that should be accepted. } --- Set whether the server will use an adaptive/dynamic TCP window size -adaptive_window = true +-- Set whether the server will use an adaptive/dynamic HTTPS window size +https_adaptive_window_size = false -- ### Search ### -- Filter results based on different levels. The levels provided are: From 8431d8aab508e09344177903e860d300e167e586 Mon Sep 17 00:00:00 2001 From: ddotthomas Date: Tue, 20 Feb 2024 20:05:44 -0700 Subject: [PATCH 3/3] Modified documentation --- src/config/parser.rs | 2 +- websurfx/config.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/config/parser.rs b/src/config/parser.rs index dcde182..4494db3 100644 --- a/src/config/parser.rs +++ b/src/config/parser.rs @@ -30,7 +30,7 @@ pub struct Config { pub logging: bool, /// It stores the option to whether enable or disable debug mode. pub debug: bool, - /// It toggles whether to use adaptive TCP windows + /// It toggles whether to use adaptive HTTP windows pub adaptive_window: bool, /// It stores all the engine names that were enabled by the user. pub upstream_search_engines: HashMap, diff --git a/websurfx/config.lua b/websurfx/config.lua index 32b20da..3b6c4ab 100644 --- a/websurfx/config.lua +++ b/websurfx/config.lua @@ -14,7 +14,7 @@ rate_limiter = { number_of_requests = 20, -- The number of request that are allowed within a provided time limit. time_limit = 3, -- The time limit in which the quantity of requests that should be accepted. } --- Set whether the server will use an adaptive/dynamic HTTPS window size +-- Set whether the server will use an adaptive/dynamic HTTPS window size, see https://httpwg.org/specs/rfc9113.html#fc-principles https_adaptive_window_size = false -- ### Search ###