- 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,28 +1898,34 @@ 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__);
//string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?" + newPublishToServerInfo; std::string serverInfo = "no masterserver defined.";
string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?"; try {
if(Config::getInstance().getString("Masterserver","") != "") {
//string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?" + newPublishToServerInfo;
string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?";
CURL *handle = SystemFlags::initHTTP(); CURL *handle = SystemFlags::initHTTP();
for(std::map<string,string>::const_iterator iterMap = newPublishToServerInfo.begin(); for(std::map<string,string>::const_iterator iterMap = newPublishToServerInfo.begin();
iterMap != newPublishToServerInfo.end(); iterMap++) { iterMap != newPublishToServerInfo.end(); iterMap++) {
request += iterMap->first; request += iterMap->first;
request += "="; request += "=";
request += SystemFlags::escapeURL(iterMap->second,handle); request += SystemFlags::escapeURL(iterMap->second,handle);
request += "&"; request += "&";
}
//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());
serverInfo = SystemFlags::getHTTP(request,handle);
SystemFlags::cleanupHTTP(&handle);
}
//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());
}
catch(const exception &ex) {
serverInfo = ex.what();
} }
//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());
std::string serverInfo = SystemFlags::getHTTP(request,handle);
SystemFlags::cleanupHTTP(&handle);
//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());
// 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

@ -1,6 +1,6 @@
// ============================================================== // ==============================================================
// This file is part of Glest (www.glest.org) // This file is part of Glest (www.glest.org)
// //
// Copyright (C) 2010- by Titus Tscharntke // Copyright (C) 2010- by Titus Tscharntke
// //
// You can redistribute this code and/or modify it under // You can redistribute this code and/or modify it under
@ -45,7 +45,7 @@ ServerLine::ServerLine( MasterServerInfo *mServerInfo, int lineIndex, const char
masterServerInfo = *mServerInfo; masterServerInfo = *mServerInfo;
int i=10; int i=10;
int startOffset=600; int startOffset=600;
//general info: //general info:
i+=10; i+=10;
glestVersionLabel.registerGraphicComponent(containerName,"glestVersionLabel" + intToStr(lineIndex)); glestVersionLabel.registerGraphicComponent(containerName,"glestVersionLabel" + intToStr(lineIndex));
@ -64,39 +64,39 @@ ServerLine::ServerLine( MasterServerInfo *mServerInfo, int lineIndex, const char
// binaryCompileDateLabel.registerGraphicComponent(containerName,"binaryCompileDateLabel" + intToStr(lineIndex)); // binaryCompileDateLabel.registerGraphicComponent(containerName,"binaryCompileDateLabel" + intToStr(lineIndex));
// binaryCompileDateLabel.init(i,startOffset-lineOffset); // binaryCompileDateLabel.init(i,startOffset-lineOffset);
// binaryCompileDateLabel.setText(masterServerInfo.getBinaryCompileDate()); // binaryCompileDateLabel.setText(masterServerInfo.getBinaryCompileDate());
//game info: //game info:
i+=130; i+=130;
registeredObjNameList.push_back("serverTitleLabel" + intToStr(lineIndex)); registeredObjNameList.push_back("serverTitleLabel" + intToStr(lineIndex));
serverTitleLabel.registerGraphicComponent(containerName,"serverTitleLabel" + intToStr(lineIndex)); serverTitleLabel.registerGraphicComponent(containerName,"serverTitleLabel" + intToStr(lineIndex));
serverTitleLabel.init(i,startOffset-lineOffset); serverTitleLabel.init(i,startOffset-lineOffset);
serverTitleLabel.setText(masterServerInfo.getServerTitle()); serverTitleLabel.setText(masterServerInfo.getServerTitle());
i+=210; i+=210;
registeredObjNameList.push_back("ipAddressLabel" + intToStr(lineIndex)); registeredObjNameList.push_back("ipAddressLabel" + intToStr(lineIndex));
ipAddressLabel.registerGraphicComponent(containerName,"ipAddressLabel" + intToStr(lineIndex)); ipAddressLabel.registerGraphicComponent(containerName,"ipAddressLabel" + intToStr(lineIndex));
ipAddressLabel.init(i,startOffset-lineOffset); ipAddressLabel.init(i,startOffset-lineOffset);
ipAddressLabel.setText(masterServerInfo.getIpAddress()); ipAddressLabel.setText(masterServerInfo.getIpAddress());
//game setup info: //game setup info:
i+=100; i+=100;
registeredObjNameList.push_back("techLabel" + intToStr(lineIndex)); registeredObjNameList.push_back("techLabel" + intToStr(lineIndex));
techLabel.registerGraphicComponent(containerName,"techLabel" + intToStr(lineIndex)); techLabel.registerGraphicComponent(containerName,"techLabel" + intToStr(lineIndex));
techLabel.init(i,startOffset-lineOffset); techLabel.init(i,startOffset-lineOffset);
techLabel.setText(masterServerInfo.getTech()); techLabel.setText(masterServerInfo.getTech());
i+=100; i+=100;
registeredObjNameList.push_back("mapLabel" + intToStr(lineIndex)); registeredObjNameList.push_back("mapLabel" + intToStr(lineIndex));
mapLabel.registerGraphicComponent(containerName,"mapLabel" + intToStr(lineIndex)); mapLabel.registerGraphicComponent(containerName,"mapLabel" + intToStr(lineIndex));
mapLabel.init(i,startOffset-lineOffset); mapLabel.init(i,startOffset-lineOffset);
mapLabel.setText(masterServerInfo.getMap()); mapLabel.setText(masterServerInfo.getMap());
i+=100; i+=100;
registeredObjNameList.push_back("tilesetLabel" + intToStr(lineIndex)); registeredObjNameList.push_back("tilesetLabel" + intToStr(lineIndex));
tilesetLabel.registerGraphicComponent(containerName,"tilesetLabel" + intToStr(lineIndex)); tilesetLabel.registerGraphicComponent(containerName,"tilesetLabel" + intToStr(lineIndex));
tilesetLabel.init(i,startOffset-lineOffset); tilesetLabel.init(i,startOffset-lineOffset);
tilesetLabel.setText(masterServerInfo.getTileset()); tilesetLabel.setText(masterServerInfo.getTileset());
i+=100; i+=100;
registeredObjNameList.push_back("activeSlotsLabel" + intToStr(lineIndex)); registeredObjNameList.push_back("activeSlotsLabel" + intToStr(lineIndex));
activeSlotsLabel.registerGraphicComponent(containerName,"activeSlotsLabel" + intToStr(lineIndex)); activeSlotsLabel.registerGraphicComponent(containerName,"activeSlotsLabel" + intToStr(lineIndex));
@ -170,14 +170,14 @@ void ServerLine::render() {
renderer.renderLabel(&glestVersionLabel); renderer.renderLabel(&glestVersionLabel);
renderer.renderLabel(&platformLabel); renderer.renderLabel(&platformLabel);
//renderer.renderLabel(&binaryCompileDateLabel); //renderer.renderLabel(&binaryCompileDateLabel);
//game info: //game info:
renderer.renderLabel(&serverTitleLabel); renderer.renderLabel(&serverTitleLabel);
renderer.renderLabel(&ipAddressLabel); renderer.renderLabel(&ipAddressLabel);
//game setup info: //game setup info:
renderer.renderLabel(&techLabel); renderer.renderLabel(&techLabel);
renderer.renderLabel(&mapLabel); renderer.renderLabel(&mapLabel);
renderer.renderLabel(&tilesetLabel); renderer.renderLabel(&tilesetLabel);
renderer.renderLabel(&activeSlotsLabel); renderer.renderLabel(&activeSlotsLabel);
renderer.renderLabel(&externalConnectPort); renderer.renderLabel(&externalConnectPort);
@ -188,14 +188,14 @@ void ServerLine::render() {
// ===================================================== // =====================================================
MenuStateMasterserver::MenuStateMasterserver(Program *program, MainMenu *mainMenu): MenuStateMasterserver::MenuStateMasterserver(Program *program, MainMenu *mainMenu):
MenuState(program, mainMenu, "masterserver") MenuState(program, mainMenu, "masterserver")
{ {
containerName = "MasterServer"; containerName = "MasterServer";
updateFromMasterserverThread = NULL; updateFromMasterserverThread = NULL;
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__);
Lang &lang= Lang::getInstance(); Lang &lang= Lang::getInstance();
autoRefreshTime=0; autoRefreshTime=0;
playServerFoundSound=false; playServerFoundSound=false;
announcementLoaded=false; announcementLoaded=false;
@ -204,9 +204,9 @@ MenuStateMasterserver::MenuStateMasterserver(Program *program, MainMenu *mainMen
mainMessageBox.init(lang.get("Ok")); mainMessageBox.init(lang.get("Ok"));
mainMessageBox.setEnabled(false); mainMessageBox.setEnabled(false);
mainMessageBoxState=0; mainMessageBoxState=0;
lastRefreshTimer= time(NULL); lastRefreshTimer= time(NULL);
// announcement // announcement
announcementLabel.registerGraphicComponent(containerName,"announcementLabel"); announcementLabel.registerGraphicComponent(containerName,"announcementLabel");
announcementLabel.init(10, 730); announcementLabel.init(10, 730);
@ -227,10 +227,10 @@ MenuStateMasterserver::MenuStateMasterserver(Program *program, MainMenu *mainMen
if(Config::getInstance().getString("Masterserver","") == "") { if(Config::getInstance().getString("Masterserver","") == "") {
labelTitle.setText("*** " + lang.get("AvailableServers")); labelTitle.setText("*** " + lang.get("AvailableServers"));
} }
// bottom // bottom
int buttonPos=130; int buttonPos=130;
labelChatUrl.registerGraphicComponent(containerName,"labelChatUrl"); labelChatUrl.registerGraphicComponent(containerName,"labelChatUrl");
labelChatUrl.init(150,buttonPos-50); labelChatUrl.init(150,buttonPos-50);
labelChatUrl.setFont(CoreData::getInstance().getMenuFontBig()); labelChatUrl.setFont(CoreData::getInstance().getMenuFontBig());
@ -301,7 +301,7 @@ MenuStateMasterserver::MenuStateMasterserver(Program *program, MainMenu *mainMen
selectButton.setText(lang.get("MGJoinGameSlots")); selectButton.setText(lang.get("MGJoinGameSlots"));
// Titles for current games - END // Titles for current games - END
buttonReturn.registerGraphicComponent(containerName,"buttonReturn"); buttonReturn.registerGraphicComponent(containerName,"buttonReturn");
buttonReturn.init(50, buttonPos, 150); buttonReturn.init(50, buttonPos, 150);
@ -332,7 +332,7 @@ MenuStateMasterserver::MenuStateMasterserver(Program *program, MainMenu *mainMen
NetworkManager::getInstance().end(); NetworkManager::getInstance().end();
NetworkManager::getInstance().init(nrClient); NetworkManager::getInstance().init(nrClient);
// write hint to console: // write hint to console:
Config &configKeys = Config::getInstance(std::pair<ConfigType,ConfigType>(cfgMainKeys,cfgUserKeys)); Config &configKeys = Config::getInstance(std::pair<ConfigType,ConfigType>(cfgMainKeys,cfgUserKeys));
console.addLine(lang.get("To switch off music press")+" - \""+configKeys.getCharKey("ToggleMusic")+"\""); console.addLine(lang.get("To switch off music press")+" - \""+configKeys.getCharKey("ToggleMusic")+"\"");
@ -400,7 +400,7 @@ void MenuStateMasterserver::mouseClick(int x, int y, MouseButton mouseButton){
if(mainMessageBox.getEnabled()){ if(mainMessageBox.getEnabled()){
int button= 1; int button= 1;
if(mainMessageBox.mouseClick(x, y, button)) if(mainMessageBox.mouseClick(x, y, button))
{ {
soundRenderer.playFx(coreData.getClickSoundA()); soundRenderer.playFx(coreData.getClickSoundA());
if(button==1) if(button==1)
{ {
@ -514,7 +514,7 @@ void MenuStateMasterserver::mouseMove(int x, int y, const MouseState *ms){
buttonReturn.mouseMove(x, y); buttonReturn.mouseMove(x, y);
buttonCreateGame.mouseMove(x, y); buttonCreateGame.mouseMove(x, y);
listBoxAutoRefresh.mouseMove(x, y); listBoxAutoRefresh.mouseMove(x, y);
for(int i=0; i<serverLines.size(); ++i){ for(int i=0; i<serverLines.size(); ++i){
serverLines[i]->buttonMouseMove(x, y); serverLines[i]->buttonMouseMove(x, y);
} }
@ -564,7 +564,7 @@ void MenuStateMasterserver::render(){
// render console // render console
renderer.renderConsole(&console,false,false); renderer.renderConsole(&console,false,false);
for(int i=0; i<serverLines.size(); ++i){ for(int i=0; i<serverLines.size(); ++i){
serverLines[i]->render(); serverLines[i]->render();
} }
@ -578,7 +578,7 @@ void MenuStateMasterserver::update(){
needUpdateFromServer = true; needUpdateFromServer = true;
lastRefreshTimer= time(NULL); lastRefreshTimer= time(NULL);
} }
if(playServerFoundSound) if(playServerFoundSound)
{ {
SoundRenderer::getInstance().playFx(CoreData::getInstance().getAttentionSound()); SoundRenderer::getInstance().playFx(CoreData::getInstance().getAttentionSound());
@ -586,10 +586,10 @@ void MenuStateMasterserver::update(){
Config &config = Config::getInstance(); Config &config = Config::getInstance();
float configVolume = (config.getInt("SoundVolumeMusic") / 100.f); float configVolume = (config.getInt("SoundVolumeMusic") / 100.f);
CoreData::getInstance().getMenuMusic()->setVolume(configVolume); CoreData::getInstance().getMenuMusic()->setVolume(configVolume);
playServerFoundSound=false; playServerFoundSound=false;
} }
console.update(); console.update();
if(threadedErrorMsg != "") { if(threadedErrorMsg != "") {
@ -663,74 +663,81 @@ void MenuStateMasterserver::updateServerInfo() {
announcementLoaded=true; announcementLoaded=true;
} }
if(Config::getInstance().getString("Masterserver","") != "") { Lang &lang= Lang::getInstance();
std::string serverInfo = SystemFlags::getHTTP(Config::getInstance().getString("Masterserver") + "showServersForGlest.php"); try {
if(Config::getInstance().getString("Masterserver","") != "") {
std::string serverInfo = SystemFlags::getHTTP(Config::getInstance().getString("Masterserver") + "showServersForGlest.php");
if(serverInfo != "") { if(serverInfo != "") {
std::vector<std::string> serverList; std::vector<std::string> serverList;
Tokenize(serverInfo,serverList,"\n"); Tokenize(serverInfo,serverList,"\n");
for(int i=0; i < serverList.size(); i++) { for(int i=0; i < serverList.size(); i++) {
string &server = serverList[i]; string &server = serverList[i];
std::vector<std::string> serverEntities; std::vector<std::string> serverEntities;
Tokenize(server,serverEntities,"|"); Tokenize(server,serverEntities,"|");
const int MIN_FIELDS_EXPECTED = 12; const int MIN_FIELDS_EXPECTED = 12;
if(serverEntities.size() >= MIN_FIELDS_EXPECTED) { if(serverEntities.size() >= MIN_FIELDS_EXPECTED) {
labelTitle.setText(lang.get("AvailableServers"));
Lang &lang= Lang::getInstance(); if(Config::getInstance().getString("Masterserver","") == "") {
labelTitle.setText(lang.get("AvailableServers")); labelTitle.setText("*** " + lang.get("AvailableServers"));
}
if(Config::getInstance().getString("Masterserver","") == "") { MasterServerInfo *masterServerInfo=new MasterServerInfo();
labelTitle.setText("*** " + lang.get("AvailableServers"));
}
MasterServerInfo *masterServerInfo=new MasterServerInfo(); //general info:
masterServerInfo->setGlestVersion(serverEntities[0]);
masterServerInfo->setPlatform(serverEntities[1]);
masterServerInfo->setBinaryCompileDate(serverEntities[2]);
//general info: //game info:
masterServerInfo->setGlestVersion(serverEntities[0]); masterServerInfo->setServerTitle(serverEntities[3]);
masterServerInfo->setPlatform(serverEntities[1]); masterServerInfo->setIpAddress(serverEntities[4]);
masterServerInfo->setBinaryCompileDate(serverEntities[2]);
//game info: //game setup info:
masterServerInfo->setServerTitle(serverEntities[3]); masterServerInfo->setTech(serverEntities[5]);
masterServerInfo->setIpAddress(serverEntities[4]); masterServerInfo->setMap(serverEntities[6]);
masterServerInfo->setTileset(serverEntities[7]);
masterServerInfo->setActiveSlots(strToInt(serverEntities[8]));
masterServerInfo->setNetworkSlots(strToInt(serverEntities[9]));
masterServerInfo->setConnectedClients(strToInt(serverEntities[10]));
masterServerInfo->setExternalConnectPort(strToInt(serverEntities[11]));
//game setup info: //printf("Getting Ping time for host %s\n",masterServerInfo->getIpAddress().c_str());
masterServerInfo->setTech(serverEntities[5]); //float pingTime = Socket::getAveragePingMS(masterServerInfo->getIpAddress().c_str(),1);
masterServerInfo->setMap(serverEntities[6]); //printf("Ping time = %f\n",pingTime);
masterServerInfo->setTileset(serverEntities[7]); char szBuf[1024]="";
masterServerInfo->setActiveSlots(strToInt(serverEntities[8])); //sprintf(szBuf,"%s, %.2fms",masterServerInfo->getServerTitle().c_str(),pingTime);
masterServerInfo->setNetworkSlots(strToInt(serverEntities[9])); sprintf(szBuf,"%s",masterServerInfo->getServerTitle().c_str());
masterServerInfo->setConnectedClients(strToInt(serverEntities[10])); masterServerInfo->setServerTitle(szBuf);
masterServerInfo->setExternalConnectPort(strToInt(serverEntities[11]));
//printf("Getting Ping time for host %s\n",masterServerInfo->getIpAddress().c_str()); safeMutexPtr.Lock();
//float pingTime = Socket::getAveragePingMS(masterServerInfo->getIpAddress().c_str(),1); if( masterServerThreadInDeletion == true ||
//printf("Ping time = %f\n",pingTime); updateFromMasterserverThread == NULL ||
char szBuf[1024]=""; updateFromMasterserverThread->getQuitStatus() == true) {
//sprintf(szBuf,"%s, %.2fms",masterServerInfo->getServerTitle().c_str(),pingTime); safeMutexPtr.ReleaseLock();
sprintf(szBuf,"%s",masterServerInfo->getServerTitle().c_str()); return;
masterServerInfo->setServerTitle(szBuf); }
safeMutexPtr.ReleaseLock(true);
safeMutexPtr.Lock(); safeMutex.Lock();
if( masterServerThreadInDeletion == true || serverLines.push_back(new ServerLine( masterServerInfo, i, containerName));
updateFromMasterserverThread == NULL || safeMutex.ReleaseLock(true);
updateFromMasterserverThread->getQuitStatus() == true) { }
safeMutexPtr.ReleaseLock(); else {
return; Lang &lang= Lang::getInstance();
} labelTitle.setText("*** " + lang.get("AvailableServers") + " [" + serverInfo + "]");
safeMutexPtr.ReleaseLock(true);
safeMutex.Lock(); SystemFlags::OutputDebug(SystemFlags::debugError,"In [%s::%s Line %d] error, no masterserver defined!\n",__FILE__,__FUNCTION__,__LINE__);
serverLines.push_back(new ServerLine( masterServerInfo, i, containerName)); }
safeMutex.ReleaseLock(true); }
} }
else { }
Lang &lang= Lang::getInstance(); }
labelTitle.setText("*** " + lang.get("AvailableServers") + " [" + serverInfo + "]"); 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();
@ -740,7 +747,7 @@ void MenuStateMasterserver::updateServerInfo() {
return; return;
} }
safeMutexPtr.ReleaseLock(); safeMutexPtr.ReleaseLock();
safeMutex.Lock(); safeMutex.Lock();
if(serverLines.size()>numberOfOldServerLines) { if(serverLines.size()>numberOfOldServerLines) {
playServerFoundSound=true; playServerFoundSound=true;
@ -770,17 +777,17 @@ bool MenuStateMasterserver::connectToServer(string ipString, int port)
if(clientInterface->isConnected() == false) { if(clientInterface->isConnected() == false) {
NetworkManager::getInstance().end(); NetworkManager::getInstance().end();
NetworkManager::getInstance().init(nrClient); NetworkManager::getInstance().init(nrClient);
mainMessageBoxState=1; mainMessageBoxState=1;
Lang &lang= Lang::getInstance(); Lang &lang= Lang::getInstance();
showMessageBox(lang.get("Couldnt connect"), lang.get("Connection failed"), false); showMessageBox(lang.get("Couldnt connect"), lang.get("Connection failed"), false);
return false; return false;
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] connection failed\n",__FILE__,__FUNCTION__); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] connection failed\n",__FILE__,__FUNCTION__);
} }
else { else {
SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] connected to [%s]\n",__FILE__,__FUNCTION__,serverIp.getString().c_str()); SystemFlags::OutputDebug(SystemFlags::debugSystem,"In [%s::%s] connected to [%s]\n",__FILE__,__FUNCTION__,serverIp.getString().c_str());
//save server ip //save server ip
//config.setString("ServerIp", serverIp.getString()); //config.setString("ServerIp", serverIp.getString());
//config.save(); //config.save();
@ -811,7 +818,7 @@ void MenuStateMasterserver::keyDown(char key) {
if(key == configKeys.getCharKey("ToggleMusic")) { if(key == configKeys.getCharKey("ToggleMusic")) {
Config &config = Config::getInstance(); Config &config = Config::getInstance();
Lang &lang= Lang::getInstance(); Lang &lang= Lang::getInstance();
float configVolume = (config.getInt("SoundVolumeMusic") / 100.f); float configVolume = (config.getInt("SoundVolumeMusic") / 100.f);
float currentVolume = CoreData::getInstance().getMenuMusic()->getVolume(); float currentVolume = CoreData::getInstance().getMenuMusic()->getVolume();
if(currentVolume > 0) { if(currentVolume > 0) {

View File

@ -1521,35 +1521,45 @@ void ServerInterface::simpleTask() {
lastMasterserverHeartbeatTime = time(NULL); lastMasterserverHeartbeatTime = time(NULL);
if(needToRepublishToMasterserver == true) { if(needToRepublishToMasterserver == true) {
//string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?" + newPublishToServerInfo; try {
string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?"; if(Config::getInstance().getString("Masterserver","") != "") {
//string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?" + newPublishToServerInfo;
string request = Config::getInstance().getString("Masterserver") + "addServerInfo.php?";
std::map<string,string> newPublishToServerInfo = publishToMasterserver(); std::map<string,string> newPublishToServerInfo = publishToMasterserver();
CURL *handle = SystemFlags::initHTTP(); CURL *handle = SystemFlags::initHTTP();
for(std::map<string,string>::const_iterator iterMap = newPublishToServerInfo.begin(); for(std::map<string,string>::const_iterator iterMap = newPublishToServerInfo.begin();
iterMap != newPublishToServerInfo.end(); iterMap++) { iterMap != newPublishToServerInfo.end(); iterMap++) {
request += iterMap->first; request += iterMap->first;
request += "="; request += "=";
request += SystemFlags::escapeURL(iterMap->second,handle); request += SystemFlags::escapeURL(iterMap->second,handle);
request += "&"; request += "&";
} }
//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); std::string 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());
// 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;
//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());
}
} }
} }