Index: binaries/data/mods/public/gui/common/network.js =================================================================== --- binaries/data/mods/public/gui/common/network.js +++ binaries/data/mods/public/gui/common/network.js @@ -74,6 +74,9 @@ case 7: return translate("Playername in use. If you were disconnected, retry in few seconds"); case 8: return translate("Server full"); case 9: return translate("Secure lobby authentication failed. Join via lobby"); + case 10: return translate("Error: Server failed to allocate a unique identifier."); + case 11: return translate("Error: Client commands were ready for an incorrect game turn."); + case 12: return translate("Error: Client simulatedan incorrect game turn."); default: warn("Unknown disconnect-reason ID received: " + id); return sprintf(translate("\\[Invalid value %(id)s]"), { "id": id }); Index: source/network/NetHost.h =================================================================== --- source/network/NetHost.h +++ source/network/NetHost.h @@ -1,4 +1,4 @@ -/* Copyright (C) 2017 Wildfire Games. +/* Copyright (C) 2018 Wildfire Games. * This file is part of 0 A.D. * * 0 A.D. is free software: you can redistribute it and/or modify @@ -56,6 +56,7 @@ /** * Reasons sent by server to clients in disconnection messages. * Must be kept in sync with binaries/data/mods/public/gui/common/network.js + * To help debugging, use a separate reason for each callstack leading to a disconnect. */ enum NetDisconnectReason { @@ -68,7 +69,10 @@ NDR_BANNED, NDR_PLAYERNAME_IN_USE, NDR_SERVER_FULL, - NDR_LOBBY_AUTH_FAILED + NDR_LOBBY_AUTH_FAILED, + NDR_GUID_FAILED, + NDR_INCORRECT_READY_TURN_COMMANDS, + NDR_INCORRECT_READY_TURN_SIMULATED }; class CNetHost Index: source/network/NetServer.cpp =================================================================== --- source/network/NetServer.cpp +++ source/network/NetServer.cpp @@ -910,7 +910,7 @@ { if (++count > 100) { - session->Disconnect(NDR_UNKNOWN); + session->Disconnect(NDR_GUID_FAILED); return true; } guid = ps_generate_guid(); Index: source/network/NetServerTurnManager.cpp =================================================================== --- source/network/NetServerTurnManager.cpp +++ source/network/NetServerTurnManager.cpp @@ -58,7 +58,7 @@ turn, m_ClientsReady[client] + 1); - session.Disconnect(NDR_UNKNOWN); + session.Disconnect(NDR_INCORRECT_READY_TURN_COMMANDS); } m_ClientsReady[client] = turn; @@ -106,7 +106,7 @@ turn, m_ClientsReady[client] + 1); - session.Disconnect(NDR_UNKNOWN); + session.Disconnect(NDR_INCORRECT_READY_TURN_SIMULATED); } m_ClientsSimulated[client] = turn;