Menu

#109 game servers can lock up

open
nobody
None
6
2013-02-19
2002-10-23
No

Currently all of our servers use easysock operations to
communicate with their clients.

With this, if any client sends bad data the server will
generally lock up (or worse) waiting for it. This
means a malicious client can easily lock up a game server.

Worse, ggzd has no provision for recovering from this.
If the game client is locked up there is no way to get
rid of the table. The solution to this is to have an
<UPDATE TYPE='table' ACTION='delete'> that can be
issued from the client.

I just had my DSL connection die while playing a game
of ggzcards. Now, the ggzcards game server is locked.
I speculate that the connection died in the middle of
a "packet", so that the ggzcards packet was started but
never completed (i.e. it spanned multiple TCP packets).
There is no way to get rid of this table short of
manually killing it ("killall ggzd.ggzcards") or
restarting ggzd.

Discussion


Log in to post a comment.

MongoDB Logo MongoDB