diff --git a/rpxy-bin/Cargo.toml b/rpxy-bin/Cargo.toml index 5e07d0e..fe48b48 100644 --- a/rpxy-bin/Cargo.toml +++ b/rpxy-bin/Cargo.toml @@ -13,8 +13,22 @@ publish.workspace = true # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [features] -default = ["http3-quinn", "cache", "rustls-backend", "acme", "post-quantum"] -# default = ["http3-s2n", "cache", "rustls-backend", "acme", "post-quantum"] +default = [ + "http3-quinn", + "cache", + "rustls-backend", + "sticky-cookie", + "acme", + "post-quantum", +] +# default = [ +# "http3-s2n", +# "cache", +# "rustls-backend", +# "sticky-cookie", +# "acme", +# "post-quantum", +# ] http3-quinn = ["rpxy-lib/http3-quinn"] http3-s2n = ["rpxy-lib/http3-s2n"] native-tls-backend = ["rpxy-lib/native-tls-backend"] @@ -23,11 +37,10 @@ webpki-roots = ["rpxy-lib/webpki-roots"] cache = ["rpxy-lib/cache"] acme = ["rpxy-lib/acme", "rpxy-acme"] post-quantum = ["rpxy-lib/post-quantum"] +sticky-cookie = ["rpxy-lib/sticky-cookie"] [dependencies] -rpxy-lib = { path = "../rpxy-lib/", default-features = false, features = [ - "sticky-cookie", -] } +rpxy-lib = { path = "../rpxy-lib/", default-features = false } # TODO: pin mimalloc due to compilation failure by musl mimalloc = { version = "=0.1.44", default-features = false } diff --git a/rpxy-lib/src/backend/load_balance/load_balance_main.rs b/rpxy-lib/src/backend/load_balance/load_balance_main.rs index 6d14572..78371fc 100644 --- a/rpxy-lib/src/backend/load_balance/load_balance_main.rs +++ b/rpxy-lib/src/backend/load_balance/load_balance_main.rs @@ -131,6 +131,4 @@ impl LoadBalance { pub struct LoadBalanceContext { #[cfg(feature = "sticky-cookie")] pub sticky_cookie: StickyCookie, - #[cfg(not(feature = "sticky-cookie"))] - pub sticky_cookie: (), } diff --git a/rpxy-lib/src/backend/load_balance/mod.rs b/rpxy-lib/src/backend/load_balance/mod.rs index b77f72c..28e7f20 100644 --- a/rpxy-lib/src/backend/load_balance/mod.rs +++ b/rpxy-lib/src/backend/load_balance/mod.rs @@ -4,6 +4,7 @@ mod load_balance_sticky; #[cfg(feature = "sticky-cookie")] mod sticky_cookie; +#[cfg(feature = "sticky-cookie")] use super::upstream::Upstream; use thiserror::Error; @@ -16,6 +17,7 @@ pub use load_balance_sticky::LoadBalanceStickyBuilder; pub use sticky_cookie::{StickyCookie, StickyCookieValue}; /// Result type for load balancing +#[cfg(feature = "sticky-cookie")] type LoadBalanceResult = std::result::Result; /// Describes things that can go wrong in the Load Balance #[derive(Debug, Error)] diff --git a/rpxy-lib/src/message_handler/handler_main.rs b/rpxy-lib/src/message_handler/handler_main.rs index 920e55c..d4fd53c 100644 --- a/rpxy-lib/src/message_handler/handler_main.rs +++ b/rpxy-lib/src/message_handler/handler_main.rs @@ -24,10 +24,7 @@ use tokio::io::copy_bidirectional; #[derive(Debug)] /// Context object to handle sticky cookies at HTTP message handler pub(super) struct HandlerContext { - #[cfg(feature = "sticky-cookie")] pub(super) context_lb: Option, - #[cfg(not(feature = "sticky-cookie"))] - pub(super) context_lb: Option<()>, } #[derive(Clone, Builder)] diff --git a/rpxy-lib/src/message_handler/utils_headers.rs b/rpxy-lib/src/message_handler/utils_headers.rs index cab6e01..fe351d9 100644 --- a/rpxy-lib/src/message_handler/utils_headers.rs +++ b/rpxy-lib/src/message_handler/utils_headers.rs @@ -3,7 +3,7 @@ use crate::{ backend::{UpstreamCandidates, UpstreamOption}, log::*, }; -use anyhow::{Result, anyhow, ensure}; +use anyhow::{Result, anyhow}; use bytes::BufMut; use http::{HeaderMap, HeaderName, HeaderValue, Uri, header}; use std::{borrow::Cow, net::SocketAddr}; @@ -35,7 +35,7 @@ pub(super) fn takeout_sticky_cookie_lb_context( if sticky_cookies.is_empty() { return Ok(None); } - ensure!(sticky_cookies.len() == 1, "Invalid cookie: Multiple sticky cookie values"); + anyhow::ensure!(sticky_cookies.len() == 1, "Invalid cookie: Multiple sticky cookie values"); let cookies_passed_to_upstream = without_sticky_cookies.join("; "); let cookie_passed_to_lb = sticky_cookies.first().unwrap();