Package: pyscrabble / 1.6.2-10

max-players.patch Patch series | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
From: Christian von Kietzell <christian@vonkietzell.de>
Bug-Debian: http://bugs.debian.org/633838
Forwarded: no
Description: Check whether an existing player is rejoining _before_
 checking whether the maximum of players has been reached.

--- pyscrabble-1.6.2/pyscrabble/net/server.py	2011-07-14 19:32:42.000000000 +0200
+++ pyscrabble-fixed/pyscrabble/net/server.py	2011-07-14 19:35:50.000000000 +0200
@@ -936,21 +936,21 @@
             client.denyJoinGame(command)
             return
         
-        if (game.getNumberOfPlayers() == constants.MAX_PLAYERS):
-            command.setData( ServerMessage([GAME_FULL]) )
-            command.setCommand( constants.GAME_JOIN_DENIED )
-            client.denyJoinGame(command)
-            return
-
         p = self.clients[client].clone()
         
-        if (game.isPaused() and not game.hasPlayer(p)):
-            command.setData( ServerMessage([CANNOT_JOIN_STARTED]) )
-            command.setCommand( constants.GAME_JOIN_DENIED )
-            client.denyJoinGame(command)
-            return
-
         if not game.hasPlayer( p ):
+            if (game.getNumberOfPlayers() == constants.MAX_PLAYERS):
+                command.setData( ServerMessage([GAME_FULL]) )
+                command.setCommand( constants.GAME_JOIN_DENIED )
+                client.denyJoinGame(command)
+                return
+
+            if (game.isPaused()):
+                command.setData( ServerMessage([CANNOT_JOIN_STARTED]) )
+                command.setCommand( constants.GAME_JOIN_DENIED )
+                client.denyJoinGame(command)
+                return
+
             game.addPlayer( p )
         else:
             game.removePending( p )