From bc9e54216bebcbf420b476724a3a98c1797d98df Mon Sep 17 00:00:00 2001 From: joshrmcdaniel <80354972+joshrmcdaniel@users.noreply.github.com> Date: Sat, 31 May 2025 06:34:36 -0500 Subject: [PATCH 1/2] remove zstd encoding --- privaxy/src/server/proxy/serve.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/privaxy/src/server/proxy/serve.rs b/privaxy/src/server/proxy/serve.rs index e5df75f..98cca56 100644 --- a/privaxy/src/server/proxy/serve.rs +++ b/privaxy/src/server/proxy/serve.rs @@ -94,6 +94,30 @@ pub(crate) async fn serve( let mut request_headers = req.headers().clone(); request_headers.remove(http::header::CONNECTION); request_headers.remove(http::header::HOST); + + // zstd is causing issues + if let Some(accept_encoding) = request_headers.get(http::header::ACCEPT_ENCODING) { + if let Ok(encoding_str) = accept_encoding.to_str() { + if encoding_str.contains("zstd") { + let new_encoding = encoding_str + .split(',') + .filter(|e| !e.trim().eq_ignore_ascii_case("zstd")) + .collect::>() + .join(", "); + + if !new_encoding.is_empty() { + request_headers.insert( + http::header::ACCEPT_ENCODING, + http::HeaderValue::from_str(&new_encoding).unwrap_or_else(|_| { + http::HeaderValue::from_static("gzip, deflate, br") + }), + ); + } else { + request_headers.remove(http::header::ACCEPT_ENCODING); + } + } + } + } let mut response = match client .request(req.method().clone(), req.uri().to_string()) .headers(request_headers) From acf98fcfe21b1711928dc2add4ad882f9d4da491 Mon Sep 17 00:00:00 2001 From: joshrmcdaniel <80354972+joshrmcdaniel@users.noreply.github.com> Date: Sat, 31 May 2025 06:38:58 -0500 Subject: [PATCH 2/2] fmt --- privaxy/src/server/proxy/serve.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/privaxy/src/server/proxy/serve.rs b/privaxy/src/server/proxy/serve.rs index 98cca56..5c30050 100644 --- a/privaxy/src/server/proxy/serve.rs +++ b/privaxy/src/server/proxy/serve.rs @@ -94,7 +94,7 @@ pub(crate) async fn serve( let mut request_headers = req.headers().clone(); request_headers.remove(http::header::CONNECTION); request_headers.remove(http::header::HOST); - + // zstd is causing issues if let Some(accept_encoding) = request_headers.get(http::header::ACCEPT_ENCODING) { if let Ok(encoding_str) = accept_encoding.to_str() { @@ -104,7 +104,7 @@ pub(crate) async fn serve( .filter(|e| !e.trim().eq_ignore_ascii_case("zstd")) .collect::>() .join(", "); - + if !new_encoding.is_empty() { request_headers.insert( http::header::ACCEPT_ENCODING,