diff --git a/src/mangosd/Master.cpp b/src/mangosd/Master.cpp index 56dd504d6..8e4daa9b4 100644 --- a/src/mangosd/Master.cpp +++ b/src/mangosd/Master.cpp @@ -414,12 +414,19 @@ bool Master::_StartDB() } if(!WorldDatabase.CheckRequiredField("db_version",REVISION_DB_MANGOS)) + { + ///- Wait for already started DB delay threads to end + WorldDatabase.HaltDelayThread(); return false; + } dbstring = sConfig.GetStringDefault("CharacterDatabaseInfo", ""); if(dbstring.empty()) { sLog.outError("Character Database not specified in configuration file"); + + ///- Wait for already started DB delay threads to end + WorldDatabase.HaltDelayThread(); return false; } sLog.outString("Character Database: %s", dbstring.c_str()); @@ -428,17 +435,29 @@ bool Master::_StartDB() if(!CharacterDatabase.Initialize(dbstring.c_str())) { sLog.outError("Cannot connect to Character database %s",dbstring.c_str()); + + ///- Wait for already started DB delay threads to end + WorldDatabase.HaltDelayThread(); return false; } if(!CharacterDatabase.CheckRequiredField("character_db_version",REVISION_DB_CHARACTERS)) + { + ///- Wait for already started DB delay threads to end + WorldDatabase.HaltDelayThread(); + CharacterDatabase.HaltDelayThread(); return false; + } ///- Get login database info from configuration file dbstring = sConfig.GetStringDefault("LoginDatabaseInfo", ""); if(dbstring.empty()) { sLog.outError("Login database not specified in configuration file"); + + ///- Wait for already started DB delay threads to end + WorldDatabase.HaltDelayThread(); + CharacterDatabase.HaltDelayThread(); return false; } @@ -447,17 +466,32 @@ bool Master::_StartDB() if(!loginDatabase.Initialize(dbstring.c_str())) { sLog.outError("Cannot connect to login database %s",dbstring.c_str()); + + ///- Wait for already started DB delay threads to end + WorldDatabase.HaltDelayThread(); + CharacterDatabase.HaltDelayThread(); return false; } if(!loginDatabase.CheckRequiredField("realmd_db_version",REVISION_DB_REALMD)) + { + ///- Wait for already started DB delay threads to end + WorldDatabase.HaltDelayThread(); + CharacterDatabase.HaltDelayThread(); + loginDatabase.HaltDelayThread(); return false; + } ///- Get the realm Id from the configuration file realmID = sConfig.GetIntDefault("RealmID", 0); if(!realmID) { sLog.outError("Realm ID not defined in configuration file"); + + ///- Wait for already started DB delay threads to end + WorldDatabase.HaltDelayThread(); + CharacterDatabase.HaltDelayThread(); + loginDatabase.HaltDelayThread(); return false; } diff --git a/src/realmd/Main.cpp b/src/realmd/Main.cpp index c25d827d1..c1be328c9 100644 --- a/src/realmd/Main.cpp +++ b/src/realmd/Main.cpp @@ -332,7 +332,11 @@ bool StartDB() } if(!loginDatabase.CheckRequiredField("realmd_db_version",REVISION_DB_REALMD)) + { + ///- Wait for already started DB delay threads to end + loginDatabase.HaltDelayThread(); return false; + } return true; } diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 4578afef2..8dad645a8 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8824" + #define REVISION_NR "8825" #endif // __REVISION_NR_H__