Hi Don, All,
During the current testing cycle of the engine pack, one thing I've
noticed is the excellent built in facility of the CGOS client to handle
my internet connection going down. As soon as it goes down, it
automatically tries to reconnect. However, the server doesn't handle
this so well.
The client realises the connection has dropped and tries to log in
again. The server doesn't notice the client has gone. When the client
attempts to reconnect, the server thinks it is already there. This
causes two losses:
1. The engine can't finish the interrupted game and loses that game on time
2. The server thinks the engine is still connected, so it schedules
another game for the engine, which it also loses on time.
The good news is the reconnect does happen after not too long (a couple
of games go by before the login times out).
Is it possible to easily improve this? I know from experience that
detecting a loss of connection can be problematic due to timeouts in the
network stack. Would it be possible to add some kind of Client->Server
heartbeat/ping. The client sends a heartbeat say once per 10 seconds. If
you miss two heartbeats on the trot, you automatically kill the login.
If adding heartbeats is too much, how about just timing out if you
haven't had a response from the client for over a minute since the last
move?
As an easy safeguard against two losses, you could automatically log out
if a player loses on time.
Just a thought - hope it helps. Thanks again for an excellent setup -
there are so many things you have thought of already!
Raffles
_______________________________________________
Computer-go mailing list
[email protected]
http://dvandva.org/cgi-bin/mailman/listinfo/computer-go