Package: pyscrabble-server Version: 1.6.2-6.1 Severity: normal Tags: upstream patch
If a game with a maximum of 6 players is paused none of the players will be able to rejoin the game to resume it. The checks in net/server.py are incorrect. Attached is a patch which fixes the problem. -- System Information: Debian Release: 6.0.2 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable') Architecture: amd64 (x86_64) Kernel: Linux 2.6.32-5-amd64 (SMP w/2 CPU cores) Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash Versions of packages pyscrabble-server depends on: ii adduser 3.112+nmu2 add and remove users and groups ii lsb-base 3.2-23.2squeeze1 Linux Standard Base 3.2 init scrip ii pyscrabble-common 1.6.2-6.1 multiplayer scrabble implementatio ii python 2.6.6-3+squeeze6 interactive high-level object-orie ii python-nevow 0.10.0-2 Web application templating system ii python-zodb 1:3.9.4-1.1 Set of tools for using the Zope Ob pyscrabble-server recommends no packages. Versions of packages pyscrabble-server suggests: pn pyscrabble <none> (no description available) -- no debconf information
--- pyscrabble-1.6.2/pyscrabble/net/server.py 2011-07-14 09:31:46.000000000 +0200 +++ pyscrabble-fixed/pyscrabble/net/server.py 2011-07-14 09:34:28.000000000 +0200 @@ -935,22 +935,20 @@ command.setCommand( constants.GAME_JOIN_DENIED ) 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 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 )