From 76fc36108c8abece279f95c3f6879633c0c6e691 Mon Sep 17 00:00:00 2001 From: Dragory <2606411+Dragory@users.noreply.github.com> Date: Mon, 25 Oct 2021 22:54:23 +0300 Subject: [PATCH] fix: use locks for tempbans to avoid race conditions --- backend/src/plugins/ModActions/functions/banUserId.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/backend/src/plugins/ModActions/functions/banUserId.ts b/backend/src/plugins/ModActions/functions/banUserId.ts index 164deb9f..21d02738 100644 --- a/backend/src/plugins/ModActions/functions/banUserId.ts +++ b/backend/src/plugins/ModActions/functions/banUserId.ts @@ -105,6 +105,7 @@ export async function banUserId( }; } + const tempbanLock = await pluginData.locks.acquire(`tempban-${user.id}`); const existingTempban = await pluginData.state.tempbans.findExistingTempbanForUserId(user.id); if (banTime && banTime > 0) { const selfId = pluginData.client.user!.id; @@ -116,6 +117,7 @@ export async function banUserId( const tempban = (await pluginData.state.tempbans.findExistingTempbanForUserId(user.id))!; registerExpiringTempban(tempban); } + tempbanLock.unlock(); // Create a case for this action const modId = banOptions.caseArgs?.modId || pluginData.client.user!.id;