summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-03-18 11:33:31 +0100
committermetamuffin <metamuffin@disroot.org>2025-03-18 11:33:31 +0100
commit11b689c5e8ee0d0c31a94a2fc919b09aa63eeedc (patch)
tree622b491601988df1efcf19cbc773e03250892395 /src/main.rs
parent284254f9cb257bc52cebf3f0a60229f4406b8c02 (diff)
downloadgnix-11b689c5e8ee0d0c31a94a2fc919b09aa63eeedc.tar
gnix-11b689c5e8ee0d0c31a94a2fc919b09aa63eeedc.tar.bz2
gnix-11b689c5e8ee0d0c31a94a2fc919b09aa63eeedc.tar.zst
seperate h3 connection limit
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/main.rs b/src/main.rs
index 9f7ba22..3d4e764 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -52,6 +52,7 @@ pub struct State {
pub access_logs: RwLock<HashMap<String, BufWriter<File>>>,
pub l_incoming: Semaphore,
pub l_outgoing: Semaphore,
+ pub l_incoming_h3: Semaphore,
}
#[tokio::main]
@@ -89,6 +90,7 @@ async fn main() -> anyhow::Result<()> {
let state = Arc::new(State {
crypto_key: aes_gcm_siv::Aes256GcmSiv::new(GenericArray::from_slice(&config.private_key)),
l_incoming: Semaphore::new(config.limits.max_incoming_connections),
+ l_incoming_h3: Semaphore::new(config.limits.max_incoming_connections_h3),
l_outgoing: Semaphore::new(config.limits.max_outgoing_connections),
config: RwLock::new(Arc::new(config)),
access_logs: Default::default(),
@@ -226,7 +228,7 @@ async fn serve_h3(state: Arc<State>) -> Result<()> {
tokio::spawn(async move {
let addr = conn.remote_address(); // TODO wait for validatation (or not?)
debug!("h3 connection attempt from {addr}");
- let Ok(_sem) = state.l_incoming.try_acquire() else {
+ let Ok(_sem) = state.l_incoming_h3.try_acquire() else {
return conn.refuse();
};
let conn = match conn.accept() {