From 4bdea28cf4fb727a98c851b47a53d927584fc97a Mon Sep 17 00:00:00 2001 From: mathusummut Date: Sun, 11 Nov 2018 18:55:42 +0100 Subject: [PATCH] Now tolerates different versions --- .../glest_game/network/client_interface.cpp | 39 ++++--------------- source/glest_game/network/connection_slot.cpp | 37 ++++-------------- 2 files changed, 16 insertions(+), 60 deletions(-) diff --git a/source/glest_game/network/client_interface.cpp b/source/glest_game/network/client_interface.cpp index 2d977e1f2..deb849226 100644 --- a/source/glest_game/network/client_interface.cpp +++ b/source/glest_game/network/client_interface.cpp @@ -575,38 +575,15 @@ namespace Game { if (compatible == false) { if (SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork, "In [%s::%s Line: %d]\n", extractFileFromDirectoryPath(__FILE__).c_str(), __FUNCTION__, __LINE__); - bool versionMatched = false; - string sErr = ""; + string playerNameStr = getHumanPlayerName(); + string sErr = "Server and client binary mismatch!\nYou have to use the exactly same binaries!\n\nServer: " + networkMessageIntro.getVersionString() + + "\nClient: " + GameVersionString + " player [" + playerNameStr + "]"; + printf("%s\n", sErr.c_str()); - if (strncmp(GameVersionString.c_str(), networkMessageIntro.getVersionString().c_str(), GameVersionString.length()) != 0) { - string playerNameStr = getHumanPlayerName(); - sErr = "Server and client binary mismatch!\nYou have to use the exactly same binaries!\n\nServer: " + networkMessageIntro.getVersionString() + - "\nClient: " + GameVersionString + " player [" + playerNameStr + "]"; - printf("%s\n", sErr.c_str()); - - sendTextMessage("Server and client binary mismatch", -1, true, ""); - sendTextMessage(" Server:" + networkMessageIntro.getVersionString(), -1, true, ""); - sendTextMessage(" Client: " + GameVersionString, -1, true, ""); - sendTextMessage(" Client player [" + playerNameStr + "]", -1, true, ""); - } else { - versionMatched = true; - string playerNameStr = getHumanPlayerName(); - sErr = "Warning, Server and client are using the same version but different platforms.\n\nServer: " + networkMessageIntro.getVersionString() + - "\nClient: " + GameVersionString + " player [" + playerNameStr + "]"; - //printf("%s\n",sErr.c_str()); - } - - // error message and disconnect only if checked - if (Config::getInstance().getBool("PlatformConsistencyChecks", "true") && - versionMatched == false) { - - DisplayErrorMessage(sErr); - sleep(1); - - setQuit(true); - close(); - return; - } + sendTextMessage("Server and client binary mismatch", -1, true, ""); + sendTextMessage(" Server:" + networkMessageIntro.getVersionString(), -1, true, ""); + sendTextMessage(" Client: " + GameVersionString, -1, true, ""); + sendTextMessage(" Client player [" + playerNameStr + "]", -1, true, ""); } if (SystemFlags::getSystemSettingType(SystemFlags::debugPerformance).enabled && chrono.getMillis() > 0) SystemFlags::OutputDebug(SystemFlags::debugPerformance, "In [%s::%s Line: %d] took msecs: %lld\n", extractFileFromDirectoryPath(__FILE__).c_str(), __FUNCTION__, __LINE__, chrono.getMillis()); diff --git a/source/glest_game/network/connection_slot.cpp b/source/glest_game/network/connection_slot.cpp index 6323247a6..888e689b5 100644 --- a/source/glest_game/network/connection_slot.cpp +++ b/source/glest_game/network/connection_slot.cpp @@ -879,36 +879,15 @@ namespace Game { if (compatible == false) { if (SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork, "In [%s::%s Line: %d]\n", __FILE__, __FUNCTION__, __LINE__); - bool versionMatched = false; - string sErr = ""; + string playerNameStr = name; + string sErr = "Server and client version mismatch!\nYou have to use the exactly same versions!\n\nServer: " + GameVersionString + + "\nClient: " + networkMessageIntro.getVersionString() + " player [" + playerNameStr + "]"; + printf("%s\n", sErr.c_str()); - if (strncmp(GameVersionString.c_str(), networkMessageIntro.getVersionString().c_str(), GameVersionString.length()) != 0) { - string playerNameStr = name; - sErr = "Server and client version mismatch!\nYou have to use the exactly same versions!\n\nServer: " + GameVersionString + - "\nClient: " + networkMessageIntro.getVersionString() + " player [" + playerNameStr + "]"; - printf("%s\n", sErr.c_str()); - - serverInterface->sendTextMessage("Server and client version mismatch", -1, true, "", lockedSlotIndex); - serverInterface->sendTextMessage(" Server:" + GameVersionString, -1, true, "", lockedSlotIndex); - serverInterface->sendTextMessage(" Client: " + networkMessageIntro.getVersionString(), -1, true, "", lockedSlotIndex); - serverInterface->sendTextMessage(" Client player [" + playerNameStr + "]", -1, true, "", lockedSlotIndex); - } else { - versionMatched = true; - - string playerNameStr = name; - sErr = "Warning, Server and client are using the same version but different platforms.\n\nServer: " + GameVersionString + - "\nClient: " + networkMessageIntro.getVersionString() + " player [" + playerNameStr + "]"; - //printf("%s\n",sErr.c_str()); - if (SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork, "In [%s::%s Line: %d] %s\n", __FILE__, __FUNCTION__, __LINE__, sErr.c_str()); - } - - if (Config::getInstance().getBool("PlatformConsistencyChecks", "true") && - versionMatched == false) { // error message and disconnect only if checked - if (SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork, "In [%s::%s Line: %d] %s\n", __FILE__, __FUNCTION__, __LINE__, sErr.c_str()); - close(); - if (SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork, "In [%s::%s Line: %d] %s\n", __FILE__, __FUNCTION__, __LINE__, sErr.c_str()); - return; - } + serverInterface->sendTextMessage("Server and client version mismatch", -1, true, "", lockedSlotIndex); + serverInterface->sendTextMessage(" Server:" + GameVersionString, -1, true, "", lockedSlotIndex); + serverInterface->sendTextMessage(" Client: " + networkMessageIntro.getVersionString(), -1, true, "", lockedSlotIndex); + serverInterface->sendTextMessage(" Client player [" + playerNameStr + "]", -1, true, "", lockedSlotIndex); } if (SystemFlags::getSystemSettingType(SystemFlags::debugNetwork).enabled) SystemFlags::OutputDebug(SystemFlags::debugNetwork, "In [%s::%s Line: %d]\n", __FILE__, __FUNCTION__, __LINE__);