aboutsummaryrefslogtreecommitdiff
path: root/draughts
diff options
context:
space:
mode:
authorThomas Voss <thomasvoss@live.com> 2022-01-16 22:25:11 +0100
committerThomas Voss <thomasvoss@live.com> 2022-01-16 22:25:11 +0100
commit31e81bd0dafa8f2c5b43c0d426b333836c32a60e (patch)
treee232273ab001e9004fcd68c64e7be67481ad6c71 /draughts
parentfeecdecf2559846da48f08a2faaaefb96732fb59 (diff)
Fix bug allowing for negative ongoing games
Previously if the game ended, the players could still spam the resign button or close their tab to decrement the `stats.ongoingGames' counter. This patch removes the ability to do so by checking if the game is still in the environment before doing anything.
Diffstat (limited to 'draughts')
-rw-r--r--draughts/app.js11
1 files changed, 6 insertions, 5 deletions
diff --git a/draughts/app.js b/draughts/app.js
index 94dca46..e7fd6a1 100644
--- a/draughts/app.js
+++ b/draughts/app.js
@@ -58,11 +58,11 @@ wss.on("connection", ws => {
* array.
*/
ws.on("close", () => {
- if (game.ongoing) {
+ if (game.ongoing && env.games.includes(game)) {
game.messageOpponent({ head: Messages.DISCONNECT }, ws)
stats.ongoingGames--
+ stats.totalGames--
}
- stats.totalGames--
env.removeGame(game)
})
@@ -70,10 +70,11 @@ wss.on("connection", ws => {
msg = JSON.parse(msg)
switch (msg.head) {
case Messages.RESIGN:
- if (game.ongoing)
+ if (game.ongoing && env.games.includes(game)) {
game.messageOpponent(msg, ws)
- stats.ongoingGames--
- stats.totalGames--
+ stats.ongoingGames--
+ stats.totalGames--
+ }
env.removeGame(game)
break
case Messages.MOVED: