- added guards around masterserver property access so if missing we handle it more gracefully

This commit is contained in:
Mark Vejvoda 2010-12-20 16:45:31 +00:00
parent 591acdded4
commit 54f739c15d
3 changed files with 156 additions and 133 deletions

View File

@ -1898,6 +1898,9 @@ void MenuStateCustomGame::simpleTask() {
if(republish == true) { if(republish == true) {
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d]\n",__FILE__,__FUNCTION__,__LINE__);
std::string serverInfo = "no masterserver defined.";
try {
if(Config::getInstance().getString("Masterserver","") != "") {
//string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?" + newPublishToServerInfo; //string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?" + newPublishToServerInfo;
string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?"; string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?";
@ -1914,12 +1917,15 @@ void MenuStateCustomGame::simpleTask() {
//printf("the request is:\n%s\n",request.c_str()); //printf("the request is:\n%s\n",request.c_str());
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d] the request is:\n%s\n",__FILE__,__FUNCTION__,__LINE__,request.c_str()); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d] the request is:\n%s\n",__FILE__,__FUNCTION__,__LINE__,request.c_str());
std::string serverInfo = SystemFlags::getHTTP(request,handle); serverInfo = SystemFlags::getHTTP(request,handle);
SystemFlags::cleanupHTTP(&handle); SystemFlags::cleanupHTTP(&handle);
}
//printf("the result is:\n'%s'\n",serverInfo.c_str()); //printf("the result is:\n'%s'\n",serverInfo.c_str());
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d] the result is:\n'%s'\n",__FILE__,__FUNCTION__,__LINE__,serverInfo.c_str()); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s Line %d] the result is:\n'%s'\n",__FILE__,__FUNCTION__,__LINE__,serverInfo.c_str());
}
catch(const exception &ex) {
serverInfo = ex.what();
}
// uncomment to enable router setup check of this server // uncomment to enable router setup check of this server
if(EndsWith(serverInfo, "OK") == false) { if(EndsWith(serverInfo, "OK") == false) {
showMasterserverError=true; showMasterserverError=true;

View File

@ -663,6 +663,8 @@ void MenuStateMasterserver::updateServerInfo() {
announcementLoaded=true; announcementLoaded=true;
} }
Lang &lang= Lang::getInstance();
try {
if(Config::getInstance().getString("Masterserver","") != "") { if(Config::getInstance().getString("Masterserver","") != "") {
std::string serverInfo = SystemFlags::getHTTP(Config::getInstance().getString("Masterserver") + "showServersForGlest.php"); std::string serverInfo = SystemFlags::getHTTP(Config::getInstance().getString("Masterserver") + "showServersForGlest.php");
@ -676,8 +678,6 @@ void MenuStateMasterserver::updateServerInfo() {
const int MIN_FIELDS_EXPECTED = 12; const int MIN_FIELDS_EXPECTED = 12;
if(serverEntities.size() >= MIN_FIELDS_EXPECTED) { if(serverEntities.size() >= MIN_FIELDS_EXPECTED) {
Lang &lang= Lang::getInstance();
labelTitle.setText(lang.get("AvailableServers")); labelTitle.setText(lang.get("AvailableServers"));
if(Config::getInstance().getString("Masterserver","") == "") { if(Config::getInstance().getString("Masterserver","") == "") {
@ -728,10 +728,17 @@ void MenuStateMasterserver::updateServerInfo() {
else { else {
Lang &lang= Lang::getInstance(); Lang &lang= Lang::getInstance();
labelTitle.setText("*** " + lang.get("AvailableServers") + " [" + serverInfo + "]"); labelTitle.setText("*** " + lang.get("AvailableServers") + " [" + serverInfo + "]");
SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line %d] error, no masterserver defined!\n",__FILE__,__FUNCTION__,__LINE__);
} }
} }
} }
} }
}
catch(const exception &ex) {
labelTitle.setText("*** " + lang.get("AvailableServers") + " [" + ex.what() + "]");
SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line %d] error during Internet game status update: [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what());
}
safeMutexPtr.Lock(); safeMutexPtr.Lock();
if( updateFromMasterserverThread == NULL || if( updateFromMasterserverThread == NULL ||

View File

@ -1521,6 +1521,8 @@ void ServerInterface::simpleTask() {
lastMasterserverHeartbeatTime = time(NULL); lastMasterserverHeartbeatTime = time(NULL);
if(needToRepublishToMasterserver == true) { if(needToRepublishToMasterserver == true) {
try {
if(Config::getInstance().getString("Masterserver","") != "") {
//string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?" + newPublishToServerInfo; //string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?" + newPublishToServerInfo;
string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?"; string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?";
@ -1549,6 +1551,14 @@ void ServerInterface::simpleTask() {
if(EndsWith(serverInfo, "OK") == false) { if(EndsWith(serverInfo, "OK") == false) {
//showMasterserverError=true; //showMasterserverError=true;
//masterServererErrorToShow = (serverInfo != "" ? serverInfo : "No Reply"); //masterServererErrorToShow = (serverInfo != "" ? serverInfo : "No Reply");
}
}
else {
SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line %d] error, no masterserver defined!\n",__FILE__,__FUNCTION__,__LINE__);
}
}
catch(const exception &ex) {
SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line %d] error during game status update: [%s]\n",__FILE__,__FUNCTION__,__LINE__,ex.what());
} }
} }
} }