Enforce max websocket listeners

This commit is contained in:
Andras Schmelczer 2026-09-22 08:17:21 +01:00
commit 62f8e5fdcd

View file

@ -32,7 +32,16 @@ pub async fn websocket_handler(
) -> Result<Response, SyncServerError> {
debug!("Upgrading WebSocket connection for vault `{vault_id}`");
let Some(permit) = state.broadcasts.try_admit(&vault_id) else {
return Ok((
StatusCode::TOO_MANY_REQUESTS,
"Vault connection limit reached",
)
.into_response());
};
Ok(ws.on_upgrade(move |socket| async move {
let _permit = permit;
if let Err(error) = websocket(state, socket, vault_id).await {
debug!("WebSocket disconnected: {error}");
}