Added new binary compatibility check

This commit is contained in:
Mark Vejvoda
2010-04-30 01:32:37 +00:00
parent 0687a56e27
commit e8aa5083cb
3 changed files with 34 additions and 15 deletions

View File

@@ -28,11 +28,15 @@ const string mailString= "contact_game@glest.org";
const string glestVersionString= "v3.3.5-dev";
string getCrashDumpFileName(){
return "glest"+glestVersionString+".dmp";
return "glest" + glestVersionString + ".dmp";
}
string getNetworkVersionString(){
return glestVersionString + " - " + string(__DATE__) + " - " + string(__TIME__);
string getNetworkVersionString() {
return glestVersionString + " built: " + string(__DATE__) + " " + string(__TIME__);
}
string getNetworkPlatformFreeVersionString() {
return glestVersionString;
}
string getAboutString1(int i){

View File

@@ -1,7 +1,7 @@
// ==============================================================
// This file is part of Glest (www.glest.org)
//
// Copyright (C) 2001-2008 Marti<EFBFBD>o Figueroa
// Copyright (C) 2001-2008 Martio Figueroa
//
// You can redistribute this code and/or modify it under
// the terms of the GNU General Public License as published
@@ -28,6 +28,7 @@ extern const string networkVersionString;
string getCrashDumpFileName();
string getNetworkVersionString();
string getNetworkPlatformFreeVersionString();
string getAboutString1(int i);
string getAboutString2(int i);
string getTeammateName(int i);

View File

@@ -138,19 +138,34 @@ void ClientInterface::updateLobby()
SystemFlags::OutputDebug(SystemFlags::debugNetwork,"In [%s::%s] got NetworkMessageIntro\n",__FILE__,__FUNCTION__);
//check consistency
if(networkMessageIntro.getVersionString() != getNetworkVersionString())
//if(1)
{
string sErr = "Server and client binary mismatch!\nYou have to use the exactly same binaries!\n\nServer: " +
networkMessageIntro.getVersionString() +
"\nClient: " + getNetworkVersionString();
printf("%s\n",sErr.c_str());
bool versionMatched = false;
string platformFreeVersion = getNetworkPlatformFreeVersionString();
string sErr = "";
sendTextMessage("Server and client binary mismatch!!",-1);
sendTextMessage(" Server:" + networkMessageIntro.getVersionString(),-1);
sendTextMessage(" Client: "+ getNetworkVersionString(),-1);
if(Config::getInstance().getBool("NetworkConsistencyChecks"))
if(strncmp(platformFreeVersion.c_str(),networkMessageIntro.getVersionString().c_str(),strlen(platformFreeVersion.c_str())) != 0) {
sErr = "Server and client binary mismatch!\nYou have to use the exactly same binaries!\n\nServer: " +
networkMessageIntro.getVersionString() +
"\nClient: " + getNetworkVersionString();
printf("%s\n",sErr.c_str());
sendTextMessage("Server and client binary mismatch!!",-1);
sendTextMessage(" Server:" + networkMessageIntro.getVersionString(),-1);
sendTextMessage(" Client: "+ getNetworkVersionString(),-1);
}
else {
versionMatched = true;
sErr = "Server and client are using the same version but different platforms.\n\nServer: " +
networkMessageIntro.getVersionString() + "\nClient: " + getNetworkVersionString();
printf("%s\n",sErr.c_str());
sendTextMessage("Server and client platform mismatch.",-1);
sendTextMessage(" Server:" + networkMessageIntro.getVersionString(),-1);
sendTextMessage(" Client: "+ getNetworkVersionString(),-1);
}
if(Config::getInstance().getBool("PlatformConsistencyChecks","true") && versionMatched == false)
{// error message and disconnect only if checked
DisplayErrorMessage(sErr);
quit= true;
@@ -159,7 +174,6 @@ void ClientInterface::updateLobby()
}
}
//send intro message
NetworkMessageIntro sendNetworkMessageIntro(getNetworkVersionString(), Config::getInstance().getString("NetPlayerName",Socket::getHostName().c_str()), -1);