Enforce max websocket listeners
This commit is contained in:
parent
c3eb2dbf67
commit
62f8e5fdcd
1 changed files with 30 additions and 2 deletions
|
|
@ -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}");
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue