Comment 7 for bug 1704449

Revision history for this message
Notabilis (notabilis27) wrote :

Generally, a firewall has three choices when receiving a network packet: Forward it, send back a reject or silently drop the packet. In the first case, the metaserver (and others) can reach the game and everything is fine. In the second case the metaserver tries to connect, receives a message that he isn't permitted to do so and can continue. What we had here is the third case: The firewall (or router or whatever) is silently dropping the ping of the metaserver. Since the metaserver does not know this, he has to wait for some timeout before he can continue and send the GAME_OPEN message.

When the game has already started in that time the game client no longer expects the message, so waitcmd_ has already been set to another value and the assert fails. We could reduce the probability of this error by checking whether the game started before sending the message. But we can't completely avoid it that way. So in my opinion the assert is wrong. Based on that, I pushed a branch which removes the assert.
If someone has a better idea, just say so. But when we add a relay server this message can be removed anyway, so I don't see much sense in a complicated fix.

As an unimportant side note: Does it make any sense pinging already started games? Other players can't do anything with these games anyway.