diff --git a/quinn-proto/src/config/mod.rs b/quinn-proto/src/config/mod.rs index ef7d62312..19ff3a66f 100644 --- a/quinn-proto/src/config/mod.rs +++ b/quinn-proto/src/config/mod.rs @@ -13,12 +13,16 @@ use thiserror::Error; #[cfg(any(feature = "rustls-aws-lc-rs", feature = "rustls-ring"))] use crate::crypto::rustls::{configured_provider, QuicServerConfig}; +#[cfg(feature = "fastbloom")] +use crate::BloomTokenLog; +#[cfg(not(feature = "fastbloom"))] +use crate::NoneTokenLog; use crate::{ cid_generator::{ConnectionIdGenerator, HashedConnectionIdGenerator}, crypto::{self, HandshakeTokenKey, HmacKey}, shared::ConnectionId, - Duration, NoneTokenLog, NoneTokenStore, RandomConnectionIdGenerator, SystemTime, TokenLog, - TokenStore, VarInt, VarIntBoundsExceeded, DEFAULT_SUPPORTED_VERSIONS, MAX_CID_SIZE, + Duration, NoneTokenStore, RandomConnectionIdGenerator, SystemTime, TokenLog, TokenStore, + VarInt, VarIntBoundsExceeded, DEFAULT_SUPPORTED_VERSIONS, MAX_CID_SIZE, }; mod transport; @@ -487,8 +491,12 @@ impl ValidationTokenConfig { /// Set a custom [`TokenLog`] /// - /// Defaults to [`NoneTokenLog`], which makes the server ignore all address validation tokens - /// (that is, tokens originating from NEW_TOKEN frames--retry tokens are not affected). + /// If the `fastbloom` feature is enabled (which it is by default), defaults to a default + /// [`BloomTokenLog`], which is suitable for most internet applications. + /// + /// If the `fastbloom` feature is disabled, defaults to [`NoneTokenLog`], which makes the + /// server ignore all address validation tokens (that is, tokens originating from NEW_TOKEN + /// frames--retry tokens are not affected). pub fn log(&mut self, log: Arc<dyn TokenLog>) -> &mut Self { self.log = log; self @@ -507,9 +515,13 @@ impl ValidationTokenConfig { impl Default for ValidationTokenConfig { fn default() -> Self { + #[cfg(feature = "fastbloom")] + let log = Arc::new(BloomTokenLog::default()); + #[cfg(not(feature = "fastbloom"))] + let log = Arc::new(NoneTokenLog); Self { lifetime: Duration::from_secs(2 * 7 * 24 * 60 * 60), - log: Arc::new(NoneTokenLog), + log, sent: 0, } }