Merge pull request #228 from junkurihara/feat/fxhash-to-ahash
feat: change fxhash to ahash for hashmaps and hashsets
This commit is contained in:
commit
6ace2af852
18 changed files with 19 additions and 20 deletions
|
|
@ -15,7 +15,7 @@ post-quantum = ["rustls-post-quantum"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
url = { version = "2.5.4" }
|
url = { version = "2.5.4" }
|
||||||
rustc-hash = "2.1.0"
|
ahash = "0.8.11"
|
||||||
thiserror = "2.0.9"
|
thiserror = "2.0.9"
|
||||||
tracing = "0.1.41"
|
tracing = "0.1.41"
|
||||||
async-trait = "0.1.84"
|
async-trait = "0.1.84"
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ use crate::{
|
||||||
error::RpxyAcmeError,
|
error::RpxyAcmeError,
|
||||||
log::*,
|
log::*,
|
||||||
};
|
};
|
||||||
use rustc_hash::FxHashMap as HashMap;
|
use ahash::HashMap;
|
||||||
use rustls::ServerConfig;
|
use rustls::ServerConfig;
|
||||||
use rustls_acme::AcmeConfig;
|
use rustls_acme::AcmeConfig;
|
||||||
use std::{path::PathBuf, sync::Arc};
|
use std::{path::PathBuf, sync::Arc};
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ rpxy-lib = { path = "../rpxy-lib/", default-features = false, features = [
|
||||||
|
|
||||||
mimalloc = { version = "*", default-features = false }
|
mimalloc = { version = "*", default-features = false }
|
||||||
anyhow = "1.0.95"
|
anyhow = "1.0.95"
|
||||||
rustc-hash = "2.1.0"
|
ahash = "0.8.11"
|
||||||
serde = { version = "1.0.217", default-features = false, features = ["derive"] }
|
serde = { version = "1.0.217", default-features = false, features = ["derive"] }
|
||||||
tokio = { version = "1.42.0", default-features = false, features = [
|
tokio = { version = "1.42.0", default-features = false, features = [
|
||||||
"net",
|
"net",
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
use super::toml::ConfigToml;
|
use super::toml::ConfigToml;
|
||||||
use crate::error::{anyhow, ensure};
|
use crate::error::{anyhow, ensure};
|
||||||
|
use ahash::HashMap;
|
||||||
use clap::{Arg, ArgAction};
|
use clap::{Arg, ArgAction};
|
||||||
use hot_reload::{ReloaderReceiver, ReloaderService};
|
use hot_reload::{ReloaderReceiver, ReloaderService};
|
||||||
use rpxy_certs::{build_cert_reloader, CryptoFileSourceBuilder, CryptoReloader, ServerCryptoBase};
|
use rpxy_certs::{build_cert_reloader, CryptoFileSourceBuilder, CryptoReloader, ServerCryptoBase};
|
||||||
use rpxy_lib::{AppConfig, AppConfigList, ProxyConfig};
|
use rpxy_lib::{AppConfig, AppConfigList, ProxyConfig};
|
||||||
use rustc_hash::FxHashMap as HashMap;
|
|
||||||
|
|
||||||
#[cfg(feature = "acme")]
|
#[cfg(feature = "acme")]
|
||||||
use rpxy_acme::{AcmeManager, ACME_DIR_URL, ACME_REGISTRY_PATH};
|
use rpxy_acme::{AcmeManager, ACME_DIR_URL, ACME_REGISTRY_PATH};
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ use crate::{
|
||||||
error::{anyhow, ensure},
|
error::{anyhow, ensure},
|
||||||
log::warn,
|
log::warn,
|
||||||
};
|
};
|
||||||
|
use ahash::HashMap;
|
||||||
use rpxy_lib::{reexports::Uri, AppConfig, ProxyConfig, ReverseProxyConfig, TlsConfig, UpstreamUri};
|
use rpxy_lib::{reexports::Uri, AppConfig, ProxyConfig, ReverseProxyConfig, TlsConfig, UpstreamUri};
|
||||||
use rustc_hash::FxHashMap as HashMap;
|
|
||||||
use serde::Deserialize;
|
use serde::Deserialize;
|
||||||
use std::{fs, net::SocketAddr};
|
use std::{fs, net::SocketAddr};
|
||||||
use tokio::time::Duration;
|
use tokio::time::Duration;
|
||||||
|
|
@ -232,7 +232,7 @@ impl ConfigToml {
|
||||||
|
|
||||||
// Check unused fields during deserialization
|
// Check unused fields during deserialization
|
||||||
let t = toml::de::Deserializer::new(&config_str);
|
let t = toml::de::Deserializer::new(&config_str);
|
||||||
let mut unused = rustc_hash::FxHashSet::default();
|
let mut unused = ahash::HashSet::default();
|
||||||
|
|
||||||
let res = serde_ignored::deserialize(t, |path| {
|
let res = serde_ignored::deserialize(t, |path| {
|
||||||
unused.insert(path.to_string());
|
unused.insert(path.to_string());
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@ post-quantum = ["rustls-post-quantum"]
|
||||||
http3 = []
|
http3 = []
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rustc-hash = { version = "2.1.0" }
|
ahash = { version = "0.8.11" }
|
||||||
tracing = { version = "0.1.41" }
|
tracing = { version = "0.1.41" }
|
||||||
derive_builder = { version = "0.20.2" }
|
derive_builder = { version = "0.20.2" }
|
||||||
thiserror = { version = "2.0.9" }
|
thiserror = { version = "2.0.9" }
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::error::*;
|
use crate::error::*;
|
||||||
use rustc_hash::FxHashMap as HashMap;
|
use ahash::HashMap;
|
||||||
use rustls::{crypto::aws_lc_rs::sign::any_supported_type, pki_types, sign::CertifiedKey};
|
use rustls::{crypto::aws_lc_rs::sign::any_supported_type, pki_types, sign::CertifiedKey};
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
use x509_parser::prelude::*;
|
use x509_parser::prelude::*;
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ mod log {
|
||||||
}
|
}
|
||||||
|
|
||||||
use crate::{error::*, log::*, reloader_service::DynCryptoSource};
|
use crate::{error::*, log::*, reloader_service::DynCryptoSource};
|
||||||
|
use ahash::HashMap;
|
||||||
use hot_reload::{ReloaderReceiver, ReloaderService};
|
use hot_reload::{ReloaderReceiver, ReloaderService};
|
||||||
use rustc_hash::FxHashMap as HashMap;
|
|
||||||
use rustls::crypto::CryptoProvider;
|
use rustls::crypto::CryptoProvider;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,9 +4,9 @@ use crate::{
|
||||||
log::*,
|
log::*,
|
||||||
server_crypto::{ServerCryptoBase, ServerNameBytes},
|
server_crypto::{ServerCryptoBase, ServerNameBytes},
|
||||||
};
|
};
|
||||||
|
use ahash::HashMap;
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use hot_reload::{Reload, ReloaderError};
|
use hot_reload::{Reload, ReloaderError};
|
||||||
use rustc_hash::FxHashMap as HashMap;
|
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
/* ------------------------------------------------ */
|
/* ------------------------------------------------ */
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
use crate::{certs::SingleServerCertsKeys, error::*, log::*};
|
use crate::{certs::SingleServerCertsKeys, error::*, log::*};
|
||||||
use rustc_hash::FxHashMap as HashMap;
|
use ahash::HashMap;
|
||||||
use rustls::{
|
use rustls::{
|
||||||
crypto::CryptoProvider,
|
crypto::CryptoProvider,
|
||||||
server::{ResolvesServerCertUsingSni, WebPkiClientVerifier},
|
server::{ResolvesServerCertUsingSni, WebPkiClientVerifier},
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ post-quantum = [
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
rustc-hash = "2.1.0"
|
ahash = "0.8.11"
|
||||||
bytes = "1.9.0"
|
bytes = "1.9.0"
|
||||||
derive_builder = "0.20.2"
|
derive_builder = "0.20.2"
|
||||||
futures = { version = "0.3.31", features = ["alloc", "async-await"] }
|
futures = { version = "0.3.31", features = ["alloc", "async-await"] }
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@ use crate::{
|
||||||
name_exp::{ByteName, ServerName},
|
name_exp::{ByteName, ServerName},
|
||||||
AppConfig, AppConfigList,
|
AppConfig, AppConfigList,
|
||||||
};
|
};
|
||||||
|
use ahash::HashMap;
|
||||||
use derive_builder::Builder;
|
use derive_builder::Builder;
|
||||||
use rustc_hash::FxHashMap as HashMap;
|
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
|
|
||||||
use super::upstream::PathManager;
|
use super::upstream::PathManager;
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,8 @@ use super::{
|
||||||
Upstream,
|
Upstream,
|
||||||
};
|
};
|
||||||
use crate::{constants::STICKY_COOKIE_NAME, log::*};
|
use crate::{constants::STICKY_COOKIE_NAME, log::*};
|
||||||
|
use ahash::HashMap;
|
||||||
use derive_builder::Builder;
|
use derive_builder::Builder;
|
||||||
use rustc_hash::FxHashMap as HashMap;
|
|
||||||
use std::{
|
use std::{
|
||||||
borrow::Cow,
|
borrow::Cow,
|
||||||
sync::{
|
sync::{
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,10 @@ use crate::{
|
||||||
log::*,
|
log::*,
|
||||||
name_exp::{ByteName, PathName},
|
name_exp::{ByteName, PathName},
|
||||||
};
|
};
|
||||||
|
use ahash::{HashMap, HashSet};
|
||||||
#[cfg(feature = "sticky-cookie")]
|
#[cfg(feature = "sticky-cookie")]
|
||||||
use base64::{engine::general_purpose, Engine as _};
|
use base64::{engine::general_purpose, Engine as _};
|
||||||
use derive_builder::Builder;
|
use derive_builder::Builder;
|
||||||
use rustc_hash::{FxHashMap as HashMap, FxHashSet as HashSet};
|
|
||||||
#[cfg(feature = "sticky-cookie")]
|
#[cfg(feature = "sticky-cookie")]
|
||||||
use sha2::{Digest, Sha256};
|
use sha2::{Digest, Sha256};
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ pub struct Globals {
|
||||||
|
|
||||||
#[cfg(feature = "acme")]
|
#[cfg(feature = "acme")]
|
||||||
/// ServerConfig used for only ACME challenge for ACME domains
|
/// ServerConfig used for only ACME challenge for ACME domains
|
||||||
pub server_configs_acme_challenge: std::sync::Arc<rustc_hash::FxHashMap<String, std::sync::Arc<rustls::ServerConfig>>>,
|
pub server_configs_acme_challenge: std::sync::Arc<ahash::HashMap<String, std::sync::Arc<rustls::ServerConfig>>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Configuration parameters for proxy transport and request handlers
|
/// Configuration parameters for proxy transport and request handlers
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ pub struct RpxyOptions {
|
||||||
|
|
||||||
#[cfg(feature = "acme")]
|
#[cfg(feature = "acme")]
|
||||||
/// ServerConfig used for only ACME challenge for ACME domains
|
/// ServerConfig used for only ACME challenge for ACME domains
|
||||||
pub server_configs_acme_challenge: Arc<rustc_hash::FxHashMap<String, Arc<rustls::ServerConfig>>>,
|
pub server_configs_acme_challenge: Arc<ahash::HashMap<String, Arc<rustls::ServerConfig>>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Entrypoint that creates and spawns tasks of reverse proxy services
|
/// Entrypoint that creates and spawns tasks of reverse proxy services
|
||||||
|
|
|
||||||
|
|
@ -14,12 +14,11 @@ use crate::{
|
||||||
name_exp::ServerName,
|
name_exp::ServerName,
|
||||||
};
|
};
|
||||||
use hyper_util::server::{self, conn::auto::Builder as ConnectionBuilder};
|
use hyper_util::server::{self, conn::auto::Builder as ConnectionBuilder};
|
||||||
use rustc_hash::FxHashMap as HashMap;
|
|
||||||
use rustls::ServerConfig;
|
use rustls::ServerConfig;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
|
||||||
/// SNI to ServerConfig map type
|
/// SNI to ServerConfig map type
|
||||||
pub type SniServerCryptoMap = HashMap<ServerName, Arc<ServerConfig>>;
|
pub type SniServerCryptoMap = std::collections::HashMap<ServerName, Arc<ServerConfig>, ahash::RandomState>;
|
||||||
|
|
||||||
pub(crate) use proxy_main::Proxy;
|
pub(crate) use proxy_main::Proxy;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -294,7 +294,7 @@ where
|
||||||
let map = server_config.individual_config_map.clone().iter().map(|(k,v)| {
|
let map = server_config.individual_config_map.clone().iter().map(|(k,v)| {
|
||||||
let server_name = ServerName::from(k.as_slice());
|
let server_name = ServerName::from(k.as_slice());
|
||||||
(server_name, v.clone())
|
(server_name, v.clone())
|
||||||
}).collect::<rustc_hash::FxHashMap<_,_>>();
|
}).collect::<std::collections::HashMap<_,_,ahash::RandomState>>();
|
||||||
server_crypto_map = Some(Arc::new(map));
|
server_crypto_map = Some(Arc::new(map));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue