- changed order of port override to properly work with port status

This commit is contained in:
Mark Vejvoda 2012-03-26 07:02:54 +00:00
parent d6619a9cd3
commit 4d8fdca765
1 changed files with 45 additions and 45 deletions

View File

@ -2733,6 +2733,51 @@ int glestMain(int argc, char** argv) {
}
createDirectoryPaths(tempDataPath);
if(hasCommandArgument(argc, argv,GAME_ARGS[GAME_ARG_USE_PORTS]) == true) {
int foundParamIndIndex = -1;
hasCommandArgument(argc, argv,string(GAME_ARGS[GAME_ARG_USE_PORTS]) + string("="),&foundParamIndIndex);
if(foundParamIndIndex < 0) {
hasCommandArgument(argc, argv,string(GAME_ARGS[GAME_ARG_USE_PORTS]),&foundParamIndIndex);
}
string paramValue = argv[foundParamIndIndex];
vector<string> paramPartTokens;
Tokenize(paramValue,paramPartTokens,"=");
if(paramPartTokens.size() >= 2 && paramPartTokens[1].length() > 0) {
string portsToUse = paramPartTokens[1];
vector<string> paramPartPortsTokens;
Tokenize(portsToUse,paramPartPortsTokens,",");
if(paramPartPortsTokens.size() >= 2 && paramPartPortsTokens[1].length() > 0) {
int internalPort = strToInt(paramPartPortsTokens[0]);
int externalPort = strToInt(paramPartPortsTokens[1]);
printf("Forcing internal port# %d, external port# %d\n",internalPort,externalPort);
config.setInt("ServerPort",internalPort);
config.setInt("MasterServerExternalPort",externalPort);
config.setInt("FTPServerPort",internalPort+1);
if(paramPartPortsTokens.size() >= 3 && paramPartPortsTokens[2].length() > 0) {
int statusPort = strToInt(paramPartPortsTokens[2]);
printf("Forcing status port# %d\n",statusPort);
config.setInt("ServerAdminPort",statusPort);
}
}
else {
printf("\nInvalid ports specified on commandline [%s] value [%s]\n\n",argv[foundParamIndIndex],(paramPartTokens.size() >= 2 ? paramPartTokens[1].c_str() : NULL));
//printParameterHelp(argv[0],false);
return -1;
}
}
else {
printf("\nInvalid missing ports specified on commandline [%s] value [%s]\n\n",argv[foundParamIndIndex],(paramPartTokens.size() >= 2 ? paramPartTokens[1].c_str() : NULL));
//printParameterHelp(argv[0],false);
return -1;
}
}
if(hasCommandArgument(argc, argv,string(GAME_ARGS[GAME_ARG_MASTERSERVER_STATUS])) == true) {
Ip ip("localhost");
int port = Config::getInstance().getInt("ServerAdminPort", intToStr(GameConstants::serverAdminPort).c_str());
@ -2990,51 +3035,6 @@ int glestMain(int argc, char** argv) {
if(SystemFlags::VERBOSE_MODE_ENABLED) printf("**ENABLED OPENGL VSYNCH**\n");
}
if(hasCommandArgument(argc, argv,GAME_ARGS[GAME_ARG_USE_PORTS]) == true) {
int foundParamIndIndex = -1;
hasCommandArgument(argc, argv,string(GAME_ARGS[GAME_ARG_USE_PORTS]) + string("="),&foundParamIndIndex);
if(foundParamIndIndex < 0) {
hasCommandArgument(argc, argv,string(GAME_ARGS[GAME_ARG_USE_PORTS]),&foundParamIndIndex);
}
string paramValue = argv[foundParamIndIndex];
vector<string> paramPartTokens;
Tokenize(paramValue,paramPartTokens,"=");
if(paramPartTokens.size() >= 2 && paramPartTokens[1].length() > 0) {
string portsToUse = paramPartTokens[1];
vector<string> paramPartPortsTokens;
Tokenize(portsToUse,paramPartPortsTokens,",");
if(paramPartPortsTokens.size() >= 2 && paramPartPortsTokens[1].length() > 0) {
int internalPort = strToInt(paramPartPortsTokens[0]);
int externalPort = strToInt(paramPartPortsTokens[1]);
printf("Forcing internal port# %d, external port# %d\n",internalPort,externalPort);
config.setInt("ServerPort",internalPort);
config.setInt("MasterServerExternalPort",externalPort);
config.setInt("FTPServerPort",internalPort+1);
if(paramPartPortsTokens.size() >= 3 && paramPartPortsTokens[2].length() > 0) {
int statusPort = strToInt(paramPartPortsTokens[2]);
printf("Forcing status port# %d\n",statusPort);
config.setInt("ServerAdminPort",statusPort);
}
}
else {
printf("\nInvalid ports specified on commandline [%s] value [%s]\n\n",argv[foundParamIndIndex],(paramPartTokens.size() >= 2 ? paramPartTokens[1].c_str() : NULL));
//printParameterHelp(argv[0],false);
return -1;
}
}
else {
printf("\nInvalid missing ports specified on commandline [%s] value [%s]\n\n",argv[foundParamIndIndex],(paramPartTokens.size() >= 2 ? paramPartTokens[1].c_str() : NULL));
//printParameterHelp(argv[0],false);
return -1;
}
}
//float pingTime = Socket::getAveragePingMS("soft-haus.com");
//printf("Ping time = %f\n",pingTime);