From fb49201c054091ae032e9ae4d9cd28a7ab83d181 Mon Sep 17 00:00:00 2001 From: elliottjiang Date: Fri, 4 Sep 2026 12:02:52 +0800 Subject: [PATCH] fix(http): support no-redirect keepalive clients - preserve existing keepalive behavior for current callers - record the CC proxy redirect passthrough fix --- crates/rustpbx-http-util/src/lib.rs | 22 ++++++++++++++++++++++ src/addons/cc | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/crates/rustpbx-http-util/src/lib.rs b/crates/rustpbx-http-util/src/lib.rs index 9f74fb6c0..5a5310236 100644 --- a/crates/rustpbx-http-util/src/lib.rs +++ b/crates/rustpbx-http-util/src/lib.rs @@ -12,6 +12,24 @@ pub fn build_keepalive_client( timeout: Option, connect_timeout: Option, ) -> Result { + build_client(keepalive_client_builder(timeout, connect_timeout)) +} + +/// Builds a keepalive client that returns redirects to its caller unchanged. +pub fn build_keepalive_client_without_redirect( + timeout: Option, + connect_timeout: Option, +) -> Result { + build_client( + keepalive_client_builder(timeout, connect_timeout) + .redirect(reqwest::redirect::Policy::none()), + ) +} + +fn keepalive_client_builder( + timeout: Option, + connect_timeout: Option, +) -> reqwest::ClientBuilder { let mut builder = reqwest::Client::builder() .tcp_keepalive(DEFAULT_HTTP_TCP_KEEPALIVE) .pool_idle_timeout(DEFAULT_HTTP_POOL_IDLE_TIMEOUT) @@ -25,6 +43,10 @@ pub fn build_keepalive_client( builder = builder.connect_timeout(connect_timeout); } + builder +} + +fn build_client(builder: reqwest::ClientBuilder) -> Result { builder .build() .map_err(|e| anyhow!("Failed to build HTTP client: {}", e)) diff --git a/src/addons/cc b/src/addons/cc index dec435077..21dd9dcc8 160000 --- a/src/addons/cc +++ b/src/addons/cc @@ -1 +1 @@ -Subproject commit dec43507733a12f3e8ff6e66018112d9799f0278 +Subproject commit 21dd9dcc85ac41a17e65e85ad902db5f28060a80