Attached is a new version of the patch. The old one didn't apply cleanly because of a mixup of line endings.
Chris
--- 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 )