Fix corrupt item cache crashes, bot whispers, trade crashes

This commit is contained in:
郑佩茹
2022-03-22 10:51:50 -06:00
parent ff0e5d5e3b
commit db71f4739c
25 changed files with 299 additions and 88 deletions

View File

@@ -597,6 +597,7 @@ public:
[[nodiscard]] virtual std::string const& GetRealmName() const = 0;
virtual void SetRealmName(std::string name) = 0;
virtual void RemoveOldCorpses() = 0;
virtual SQLQueryHolderCallback& AddQueryHolderCallback(SQLQueryHolderCallback&& callback) = 0;
};
#endif //AZEROTHCORE_IWORLD_H

View File

@@ -66,6 +66,7 @@
#include "ObjectMgr.h"
#include "Opcodes.h"
#include "OutdoorPvPMgr.h"
#include "QueryHolder.h"
#include "PetitionMgr.h"
#include "Player.h"
#include "PlayerDump.h"
@@ -2459,6 +2460,7 @@ void World::Update(uint32 diff)
CharacterDatabase.KeepAlive();
LoginDatabase.KeepAlive();
WorldDatabase.KeepAlive();
sScriptMgr->OnDatabasesKeepAlive();
}
{
@@ -3302,6 +3304,8 @@ void World::LoadDBRevision()
{
m_AuthDBRevision = "Unkown Auth Database Revision";
}
sScriptMgr->OnDatabaseGetDBRevision(m_PlayerbotsDBRevision);
}
void World::UpdateAreaDependentAuras()
@@ -3369,6 +3373,12 @@ uint64 World::getWorldState(uint32 index) const
void World::ProcessQueryCallbacks()
{
_queryProcessor.ProcessReadyCallbacks();
_queryHolderProcessor.ProcessReadyCallbacks();
}
SQLQueryHolderCallback& World::AddQueryHolderCallback(SQLQueryHolderCallback&& callback)
{
return _queryHolderProcessor.AddCallback(std::move(callback));
}
void World::RemoveOldCorpses()

View File

@@ -377,6 +377,9 @@ protected:
void ResetRandomBG();
void CalendarDeleteOldEvents();
void ResetGuildCap();
SQLQueryHolderCallback& AddQueryHolderCallback(SQLQueryHolderCallback&& callback) override;
private:
static std::atomic_long m_stopEvent;
static uint8 m_ExitCode;
@@ -457,6 +460,7 @@ private:
void ProcessQueryCallbacks();
QueryCallbackProcessor _queryProcessor;
AsyncCallbackProcessor<SQLQueryHolderCallback> _queryHolderProcessor;
/**
* @brief Executed when a World Session is being finalized. Be it from a normal login or via queue popping.