From 11b689c5e8ee0d0c31a94a2fc919b09aa63eeedc Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 18 Mar 2025 11:33:31 +0100 Subject: seperate h3 connection limit --- src/main.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/main.rs') 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>>, 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) -> 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() { -- cgit v1.2.3-70-g09d2