egs_crash_2.patch
| b/code/ryzom/common/src/game_share/_backup_service_interface_singleton.cpp Wed Oct 06 11:56:21 2010 +0200 | ||
|---|---|---|
| 49 | 49 |
// method used to update stuff on config file reload / variable change |
| 50 | 50 |
void onSaveShardRootModified( NLMISC::IVariable &var ); |
| 51 | 51 |
// configuration variables - to be setup in cfg files |
| 52 |
CVariable<string> SaveShardRoot("variables", "SaveShardRoot", "Root directory of all files saved by any shard", "", 0, true, onSaveShardRootModified, false);
|
|
| 52 |
CVariable<string> GSSaveShardRoot("variables", "GSSaveShardRoot", "Root directory of all files saved by any shard", "", 0, true, onSaveShardRootModified, false);
|
|
| 53 | 53 |
|
| 54 | 54 |
// stats variables |
| 55 | 55 |
CVariable<NLMISC::TTime> BSLastAckTime("BSIF", "BSLastAckTime", "The timestamp of the last ack received from backup system", 0, 0, true);
|
| ... | ... | |
| 103 | 103 |
|
| 104 | 104 |
_ShardDependentBsi.init("BS");
|
| 105 | 105 |
_ShardDependentBsi.setRemotePath( IService::getInstance()->SaveFilesDirectory.toString() ); |
| 106 |
_ShardDependentBsi.setLocalPath( CPath::standardizePath( SaveShardRoot.get() ) + IService::getInstance()->SaveFilesDirectory.toString() ); |
|
| 106 |
_ShardDependentBsi.setLocalPath( CPath::standardizePath( GSSaveShardRoot.get() ) + IService::getInstance()->SaveFilesDirectory.toString() );
|
|
| 107 | 107 |
|
| 108 | 108 |
_GlobalBsi.init("BS");
|
| 109 | 109 |
_GlobalBsi.setRemotePath( string() ); |
| 110 |
_GlobalBsi.setLocalPath( SaveShardRoot.get() ); |
|
| 110 |
_GlobalBsi.setLocalPath( GSSaveShardRoot.get() );
|
|
| 111 | 111 |
|
| 112 | 112 |
// _PDBsi.init("PDBS");
|
| 113 | 113 |
// _PDBsi.setRemotePath( IService::getInstance()->SaveFilesDirectory.toString() ); |
| ... | ... | |
| 357 | 357 |
if ( var.getName() == "SaveFilesDirectory" ) |
| 358 | 358 |
{
|
| 359 | 359 |
_ShardDependentBsi.setRemotePath( var.toString() ); |
| 360 |
_ShardDependentBsi.setLocalPath( CPath::standardizePath( SaveShardRoot.get() ) + var.toString() ); |
|
| 360 |
_ShardDependentBsi.setLocalPath( CPath::standardizePath( GSSaveShardRoot.get() ) + var.toString() );
|
|
| 361 | 361 |
// _PDBsi.setRemotePath( var.toString() ); |
| 362 | 362 |
// _PDBsi.setLocalPath( CPath::standardizePath( SaveShardRoot.get() ) + var.toString() ); |
| 363 | 363 |
} |
| b/code/ryzom/common/src/game_share/server_edition_module.cpp Wed Oct 06 11:56:21 2010 +0200 | ||
|---|---|---|
| 96 | 96 |
CVariable<uint32> TimeBeforeAutoCloseAnimationSessionWithNoPlayer("DSS", "TimeBeforeAutoCloseAnimationSessionWithNoPlayer", "Delay in secondes before a empty animation session is closed", 15*60, 0, true);
|
| 97 | 97 |
|
| 98 | 98 |
CVariable<std::string> DefaultCharRingAccess( "DSS", "DefaultCharRingAccess", "Default Access Ring for player eg 'f1:j1:l1:d1:p1:g1:a1:'", "a1", 0, true ); |
| 99 |
CVariable<bool> DontUseSU( "DSS", "DontUseSU", "Simulate the SU", false, 0, true );
|
|
| 99 |
CVariable<bool> DSSDontUseSU( "DSS", "DSSDontUseSU", "Simulate the SU", false, 0, true );
|
|
| 100 | 100 |
|
| 101 | 101 |
CVariable<bool> AcceptScenarioWithoutHeader("DSS", "AcceptScenarioWithoutHeader", "AcceptScenarioWithoutHeader", false, 0, true);
|
| 102 | 102 |
CVariable<bool> MustVerifyRingAccessWhileLoadingAnimation("DSS", "MustVerifyRingAccessWhileLoadingAnimation", "MustVerifyRingAccessWhileLoadingAnimation", false, 0, true);
|
| ... | ... | |
| 1205 | 1205 |
return; |
| 1206 | 1206 |
} |
| 1207 | 1207 |
|
| 1208 |
if (DontUseSU) |
|
| 1208 |
if (DSSDontUseSU)
|
|
| 1209 | 1209 |
{
|
| 1210 | 1210 |
TCharId charId = static_cast<TCharId>(clientEid.getShortId()); |
| 1211 | 1211 |
CEditionSession* editionSession = getSessionByCharId(charId); |
| b/code/ryzom/server/src/ai_service/ai_script_data_manager.cpp Wed Oct 06 11:56:21 2010 +0200 | ||
|---|---|---|
| 97 | 97 |
} |
| 98 | 98 |
|
| 99 | 99 |
|
| 100 |
CVariable<string> SaveShardRoot2("variables", "SaveShardRoot2", "Root directory of all saved data by any shard", "/home/nevrax/save_shard", 0, true, cbOnSaveShardRootModified); // (SaveShardRoot from game_share/backup_service_interface.cpp is not instanciated because nothing is used from that file)
|
|
| 100 |
CVariable<string> AISSaveShardRoot("variables", "AISSaveShardRoot", "Root directory of all saved data by any shard", "/home/nevrax/save_shard", 0, true, cbOnSaveShardRootModified); // (SaveShardRoot from game_share/backup_service_interface.cpp is not instanciated because nothing is used from that file)
|
|
| 101 | 101 |
CVariable<string> PdrFilename("ai", "PdrFilename", "Pdr file containing AIScript variables", string("ai_persistent_var.pdr"), 0, true);
|
| 102 | 102 |
|
| 103 | 103 |
|
| ... | ... | |
| 173 | 173 |
|
| 174 | 174 |
std::string CAIScriptDataManager::dirname() |
| 175 | 175 |
{
|
| 176 |
return SaveShardRoot2.get()+"/"+IService::getInstance()->SaveFilesDirectory.toString()+"/ai_script_data";
|
|
| 176 |
return AISSaveShardRoot.get()+"/"+IService::getInstance()->SaveFilesDirectory.toString()+"/ai_script_data";
|
|
| 177 | 177 |
} |
| 178 | 178 |
|
| 179 | 179 |
//CConfigFile* CAIScriptDataManager::createFile(string name) |
| b/code/ryzom/server/src/backup_service/backup_file_access.cpp Wed Oct 06 11:56:21 2010 +0200 | ||
|---|---|---|
| 36 | 36 |
NLMISC::CVariable<bool> VerboseLog("backup", "VerboseLog", "Activate verbose logging of BS activity", false);
|
| 37 | 37 |
NLMISC::CVariable<bool> UseTempFile("backup", "UseTempFile", "Flag the use of temporary file for safe write or append operation", true, true);
|
| 38 | 38 |
|
| 39 |
extern NLMISC::CVariable<std::string> SaveShardRoot; |
|
| 39 |
extern NLMISC::CVariable<std::string> BSSaveShardRoot;
|
|
| 40 | 40 |
|
| 41 | 41 |
bool bsstrincmp(const char* s1, const char* s2, int n) |
| 42 | 42 |
{
|
| ... | ... | |
| 48 | 48 |
|
| 49 | 49 |
std::string getBackupFileName(const std::string& filename) |
| 50 | 50 |
{
|
| 51 |
return SaveShardRoot.get() + filename; |
|
| 51 |
return BSSaveShardRoot.get() + filename;
|
|
| 52 | 52 |
/* // BSFilePrefix and BSFileSubst are deprecated |
| 53 | 53 |
if (BSFilePrefix.get().empty()) |
| 54 | 54 |
return filename; |
| b/code/ryzom/server/src/backup_service/backup_service.cpp Wed Oct 06 11:56:21 2010 +0200 | ||
|---|---|---|
| 60 | 60 |
|
| 61 | 61 |
|
| 62 | 62 |
extern CDirectoryRateStat DirStats; |
| 63 |
extern NLMISC::CVariable<std::string> SaveShardRoot; |
|
| 63 |
extern NLMISC::CVariable<std::string> BSSaveShardRoot;
|
|
| 64 | 64 |
|
| 65 | 65 |
using namespace NLNET; |
| 66 | 66 |
using namespace NLMISC; |
| ... | ... | |
| 537 | 537 |
} |
| 538 | 538 |
} |
| 539 | 539 |
// In case something like getPathContent() has returned full paths, make paths relative to match the requested filenames |
| 540 |
fdc.stripFilename(SaveShardRoot.get()); |
|
| 540 |
fdc.stripFilename(BSSaveShardRoot.get());
|
|
| 541 | 541 |
|
| 542 | 542 |
// compose the output message |
| 543 | 543 |
CMessage msgout("BS_FILE_CLASS");
|
| b/code/ryzom/server/src/backup_service/commands.cpp Wed Oct 06 11:56:21 2010 +0200 | ||
|---|---|---|
| 30 | 30 |
|
| 31 | 31 |
CDirectoryRateStat DirStats; |
| 32 | 32 |
|
| 33 |
extern CVariable<string> SaveShardRoot; |
|
| 33 |
extern CVariable<string> BSSaveShardRoot;
|
|
| 34 | 34 |
|
| 35 | 35 |
|
| 36 | 36 |
NLMISC_COMMAND(displayFileStats, "display file read/write stats for the last minute", "") |
| ... | ... | |
| 74 | 74 |
{
|
| 75 | 75 |
// just output the list of available shard id |
| 76 | 76 |
vector<string> shards; |
| 77 |
CPath::getPathContent(SaveShardRoot, false, true, false, shards); |
|
| 77 |
CPath::getPathContent(BSSaveShardRoot, false, true, false, shards);
|
|
| 78 | 78 |
|
| 79 |
log.displayNL("Listing %u available shard id in path '%s':", shards.size(), SaveShardRoot.c_str());
|
|
| 79 |
log.displayNL("Listing %u available shard id in path '%s':", shards.size(), BSSaveShardRoot.c_str());
|
|
| 80 | 80 |
for (uint i=0; i<shards.size(); ++i) |
| 81 | 81 |
{
|
| 82 | 82 |
string id = shards[i]; |
| ... | ... | |
| 107 | 107 |
useFilter = true; |
| 108 | 108 |
} |
| 109 | 109 |
|
| 110 |
string fileName = SaveShardRoot.toString()+"/"+args[0]+"/characters/account_"+args[1]+"_"+args[2]+"_pdr.bin"; |
|
| 110 |
string fileName = BSSaveShardRoot.toString()+"/"+args[0]+"/characters/account_"+args[1]+"_"+args[2]+"_pdr.bin";
|
|
| 111 | 111 |
if (!CFile::isExists(fileName)) |
| 112 | 112 |
{
|
| 113 | 113 |
log.displayNL("The file '%s' (located here '%s') cannot be found in '%s' backup directory",
|
| b/code/ryzom/server/src/backup_service/web_connection.cpp Wed Oct 06 11:56:21 2010 +0200 | ||
|---|---|---|
| 169 | 169 |
} |
| 170 | 170 |
|
| 171 | 171 |
CVariable<string> IncrementalBackupDirectory("backup", "IncrementalBackupDirectory", "Directory to find incremental backuped archives", "", 0, true);
|
| 172 |
CVariable<string> SaveShardRoot("backup", "SaveShardRoot", "Root directory of all saved data by BS", "/home/nevrax/save_shard", 0, true, cbOnSaveShardRootModified); // (SaveShardRoot from game_share/backup_service_interface.cpp is not instanciated because the nothing is used from that file)
|
|
| 172 |
CVariable<string> BSSaveShardRoot("backup", "BSSaveShardRoot", "Root directory of all saved data by BS", "/home/nevrax/save_shard", 0, true, cbOnSaveShardRootModified); // (SaveShardRoot from game_share/backup_service_interface.cpp is not instanciated because the nothing is used from that file)
|
|
| 173 | 173 |
CVariable<string> SaveTemplatePath("backup", "SaveTemplatePath", "Directory to find saves (with shard and account replacement strings)", "$shard/characters/account_$userid_$charid$ext", 0, true);
|
| 174 | 174 |
CVariable<string> SaveExtList("backup", "SaveExtList", "List of possible extensions for save files (space separated)", "_pdr.bin _pdr.xml .bin", 0, true);
|
| 175 | 175 |
|
| ... | ... | |
| 209 | 209 |
explode(str, string("%%"), params, true);
|
| 210 | 210 |
|
| 211 | 211 |
string incrementalDir = IncrementalBackupDirectory; |
| 212 |
string saveShardRoot = SaveShardRoot; |
|
| 212 |
string saveShardRoot = BSSaveShardRoot;
|
|
| 213 | 213 |
string templatePath = SaveTemplatePath; |
| 214 | 214 |
string extList = SaveExtList; |
| 215 | 215 |
|
| ... | ... | |
| 292 | 292 |
|
| 293 | 293 |
explode(str, string("%%"), params, true);
|
| 294 | 294 |
|
| 295 |
string saveShardRoot = SaveShardRoot; |
|
| 295 |
string saveShardRoot = BSSaveShardRoot;
|
|
| 296 | 296 |
string templatePath = SaveTemplatePath; |
| 297 | 297 |
|
| 298 | 298 |
string shard; |
| ... | ... | |
| 367 | 367 |
|
| 368 | 368 |
explode(str, string("%%"), params, true);
|
| 369 | 369 |
|
| 370 |
string saveShardRoot = SaveShardRoot; |
|
| 370 |
string saveShardRoot = BSSaveShardRoot;
|
|
| 371 | 371 |
string templatePath = SaveTemplatePath; |
| 372 | 372 |
string extList = SaveExtList; |
| 373 | 373 |
|
| b/code/ryzom/server/src/entities_game_service/entity_manager/entity_callbacks.cpp Wed Oct 06 11:56:21 2010 +0200 | ||
|---|---|---|
| 106 | 106 |
|
| 107 | 107 |
extern vector<CMainlandSummary> Mainlands; |
| 108 | 108 |
|
| 109 |
extern CVariable<bool> DontUseSU; |
|
| 109 |
extern CVariable<bool> EGSDontUseSU;
|
|
| 110 | 110 |
|
| 111 | 111 |
// For shard names |
| 112 | 112 |
extern NLMISC::CVariable<uint32> FixedSessionId; |
| ... | ... | |
| 1011 | 1011 |
goto CreationFailed; |
| 1012 | 1012 |
} |
| 1013 | 1013 |
|
| 1014 |
if( DontUseSU.get() == 0) |
|
| 1014 |
if( EGSDontUseSU.get() == 0)
|
|
| 1015 | 1015 |
{
|
| 1016 | 1016 |
IShardUnifierEvent::getInstance()->validateCharacterCreation(userId, createCharMsg.Slot, createCharMsg); |
| 1017 | 1017 |
} |
| b/code/ryzom/server/src/entities_game_service/guild_manager/guild_manager.cpp Wed Oct 06 11:56:21 2010 +0200 | ||
|---|---|---|
| 55 | 55 |
extern bool IOSIsUp; |
| 56 | 56 |
extern CGenericXmlMsgHeaderManager GenericMsgManager; |
| 57 | 57 |
extern CVariable<uint32> AllowCharsFromAllSessions; |
| 58 |
extern CVariable<bool> DontUseSU; |
|
| 58 |
extern CVariable<bool> EGSDontUseSU;
|
|
| 59 | 59 |
|
| 60 | 60 |
CGuildManager* CGuildManager::_Instance = NULL; |
| 61 | 61 |
|
| ... | ... | |
| 1367 | 1367 |
|
| 1368 | 1368 |
// Send the guild list to SU to synchronize the ring database and name manager |
| 1369 | 1369 |
// (and eventualy rename some conflicting guilds) |
| 1370 |
if (DontUseSU.get() == 0) |
|
| 1370 |
if (EGSDontUseSU.get() == 0)
|
|
| 1371 | 1371 |
{
|
| 1372 | 1372 |
std::vector<CHARSYNC::CGuildInfo> guildInfos; |
| 1373 | 1373 |
|
| ... | ... | |
| 1388 | 1388 |
_GuildLoaded = true; |
| 1389 | 1389 |
|
| 1390 | 1390 |
// check guild member list against the eid translator |
| 1391 |
if ((DontUseSU.get() == 0) && IShardUnifierEvent::getInstance()->isEidTranslatorInitilazed()) |
|
| 1391 |
if ((EGSDontUseSU.get() == 0) && IShardUnifierEvent::getInstance()->isEidTranslatorInitilazed())
|
|
| 1392 | 1392 |
{
|
| 1393 | 1393 |
checkGuildMemberLists(); |
| 1394 | 1394 |
} |
| b/code/ryzom/server/src/entities_game_service/modules/shard_unifier_client.cpp Wed Oct 06 11:56:21 2010 +0200 | ||
|---|---|---|
| 54 | 54 |
|
| 55 | 55 |
extern NLMISC::CVariable<uint32> FixedSessionId; |
| 56 | 56 |
|
| 57 |
CVariable<bool> DontUseSU( "su", "DontUseSU", "If 1, allow running a shard with no Shard Unifier Service", 0, 0, 1 );
|
|
| 57 |
CVariable<bool> EGSDontUseSU( "su", "EGSDontUseSU", "If 1, allow running a shard with no Shard Unifier Service", 0, 0, 1 );
|
|
| 58 | 58 |
CVariable<bool> SimulateCharacterHasEditSession( "su", "SimulateCharacterHasEditSession", "If 1 simulate that character have alreay an edition sessiion", 0, 0, 1 ); |
| 59 | 59 |
|
| 60 | 60 |
|
| ... | ... | |
| 662 | 662 |
|
| 663 | 663 |
virtual void validateCharacterNameBeforeCreate(uint32 userId, uint8 charIndex, const ucstring &name, uint32 homeSessionId) |
| 664 | 664 |
{
|
| 665 |
if (DontUseSU.get() == 1) |
|
| 665 |
if (EGSDontUseSU.get() == 1)
|
|
| 666 | 666 |
{
|
| 667 | 667 |
// send the response to the client |
| 668 | 668 |
sendIfNameIsValide( userId, true ); |
| ... | ... | |
| 694 | 694 |
|
| 695 | 695 |
virtual bool validateCharacterCreation (uint32 userId, uint8 charIndex, const CCreateCharMsg &createCharMsg) |
| 696 | 696 |
{
|
| 697 |
if (DontUseSU.get() == 1) |
|
| 697 |
if (EGSDontUseSU.get() == 1)
|
|
| 698 | 698 |
{
|
| 699 | 699 |
cbCreateChar_part2(userId, createCharMsg, true); |
| 700 | 700 |
return true; |
| 701 | 701 |
} |
| 702 | 702 |
|
| 703 | 703 |
// send a name assignment to SU name unifier |
| 704 |
if ((_CharacterSynch == NULL) && (DontUseSU.get() == 0)) |
|
| 704 |
if ((_CharacterSynch == NULL) && (EGSDontUseSU.get() == 0))
|
|
| 705 | 705 |
{
|
| 706 | 706 |
nlinfo("VALID_NAME::SU::validateCharacterCreation name %s rejected because we have no character sync to validate the name with using SU", createCharMsg.Name.toString().c_str());
|
| 707 | 707 |
return false; |
| b/code/ryzom/server/src/frontend_service/fe_receive_sub.cpp Wed Oct 06 11:56:21 2010 +0200 | ||
|---|---|---|
| 75 | 75 |
void cbGwTrDisconnection ( TClientId clientId ); |
| 76 | 76 |
|
| 77 | 77 |
|
| 78 |
CVariable<string> SaveShardRoot("variables", "SaveShardRoot", "Root directory of all files saved by any shard", "", 0, true, NULL, false);
|
|
| 78 |
CVariable<string> FESSaveShardRoot("variables", "FESSaveShardRoot", "Root directory of all files saved by any shard", "", 0, true, NULL, false);
|
|
| 79 | 79 |
extern CVariable<bool> VerboseFEStatsTime; |
| 80 | 80 |
|
| 81 | 81 |
|
| ... | ... | |
| 842 | 842 |
{
|
| 843 | 843 |
// The client has neither been authenticated nor provided a user id, but is allowed to connect (dev mode) |
| 844 | 844 |
nlinfo ("%s using AutoAllocUserid", _CurrentInMsg->AddrFrom.asString().c_str() );
|
| 845 |
string filename = CPath::standardizePath( SaveShardRoot.get() ) + CPath::standardizePath( IService::getInstance()->SaveFilesDirectory.get() ) + "auto_uid_map.bin"; |
|
| 845 |
string filename = CPath::standardizePath( FESSaveShardRoot.get() ) + CPath::standardizePath( IService::getInstance()->SaveFilesDirectory.get() ) + "auto_uid_map.bin";
|
|
| 846 | 846 |
|
| 847 | 847 |
// Get previously allocated user ids |
| 848 | 848 |
if ( _AutoUidMap.empty() ) |