fix: use locks for tempbans to avoid race conditions

This commit is contained in:
Dragory 2021-10-25 22:54:23 +03:00
parent 0a3a5e4e58
commit 76fc36108c
No known key found for this signature in database
GPG key ID: 5F387BA66DF8AAC1

View file

@ -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;