Two clients chosing the same GUID is highly unlikely, yet possible.
A malicious client chosing an existing GUID would have resulted in
unassigning the player with that GUID.
This was SVN commit r19225.
The host can change the number of allowed observers in running games.
Make sure that joining observers won't take the "slot" of disconnected
players, fixes#3671.
Send clients a new disconnect reason "Server full" instead of letting
them timeout.
This was SVN commit r17881.
Have it disabled by default to fix#3604.
Prevents players from rejoining as late-observers in case they timed-out
on the client-side but not on the server-side.
This was SVN commit r17851.
Major updates to most network classes.
Simplify CNetServer so it doesn't duplicate any client behaviour; all
players now run CNetClient.
Remove most player/slot management from networking code.
Wait for all players to finish loading before starting the simulation.
Remove CGameAttributes; attributes are now just a JS object.
Remove CPlayer; they are now just simulation entities.
Handle player colours via simulation system.
Add a default map for Atlas, so it always has something to load.
Move network documentation to Doxygen.
Remove lots of now-unused code.
This was SVN commit r7653.
Don't flush network queue after every message.
Desingletonify CGameAttributes to allow testing.
Make network server/client basically testable.
Add very basic tests for network server/client.
Fix FsmActionCtx memory leak.
Split CNetHost into a separate file.
Convert CNetHost, CNetSession to a more conventional coding style.
Delete CNetLogger, since it's a lot of complexity and is barely used and
is redundant with CLogger.
Other minor simplifications.
This was SVN commit r7623.