Sat 10 Oct 2009 05:47:38 PM UTC, original submission:
From Levente Tamas:
we came across a situation that you should create a test suite for because it seems it is still a bug in the upstream pokerserver. you need 7 players to reproduce, and explain mode set to on on all of them (it is a bug related to the explain mode).
Table initial state: seats [ 1, 0, 2, 0, 0, 0, 3, 0, 4, 0] ( 1 dealer 2 3 blinds)
round starts, 2 player joins : seats [ 1, 0, 2, 0, 0, 5, 3, 0, 4, 6] (game goes, round ends)
6 can go into game with late blind 5 stays out because now he is in sb position
play some rounds, we did: 6-fold, 1-call, 2-call, 3-call, 4-check -- 3-check, 4-check, 1-raise, 2-fold, 3-call, 4-fold -- 3-check, 1-check -- 3-check now here login to seat#1 seats [1, 7, 2, 0, 0, 5, 3, 0, 4, 6] and boom server crash.
Reason: when the 7 joins it gets a hand replay, and as in explain mode the sendpacket will actually call explain.packet, that will invoke a beginround, that will do a buildplayerlist and will put number 5 in game, and from there on the replay will freeze, as the blinds are not payed by the ones who really had payed them. We got around this but saving the explain mode before starting the past replay packets and restoring it afterwards.
--- a/poker-network/pokernetwork/pokeravatar.py
+++ b/poker-network/pokernetwork/pokeravatar.py
@@ -1027,8 +1027,11 @@ class PokerAvatar:
# packet containing cards custom cards into placeholders
# in this case.
#
+ save_explain = self.explain
+ self.explain = None
for past_packet in table.history2packets(game.historyGet(), game.id, table.createCache()):
self.sendPacketVerbose(table.private2public(past_packet, self.getSerial()))
+ self.explain = save_explain
self.sendPacketVerbose(PacketPokerStreamMode(game_id = game.id))
def addPlayer(self, table, seat):
|