mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-22 05:06:24 +00:00
fix(Core/PacketIO): Reintroduce requeueing packets that are sent during login but need you to be logged in (#15145)
This commit is contained in:
@@ -140,7 +140,6 @@ WorldSession::WorldSession(uint32 id, std::string&& name, std::shared_ptr<WorldS
|
||||
|
||||
_offlineTime = 0;
|
||||
_kicked = false;
|
||||
_shouldSetOfflineInDB = true;
|
||||
|
||||
_timeSyncNextCounter = 0;
|
||||
_timeSyncTimer = 0;
|
||||
@@ -174,8 +173,7 @@ WorldSession::~WorldSession()
|
||||
while (_recvQueue.next(packet))
|
||||
delete packet;
|
||||
|
||||
if (GetShouldSetOfflineInDB())
|
||||
LoginDatabase.Execute("UPDATE account SET online = 0 WHERE id = {};", GetAccountId()); // One-time query
|
||||
LoginDatabase.Execute("UPDATE account SET online = 0 WHERE id = {};", GetAccountId()); // One-time query
|
||||
}
|
||||
|
||||
std::string const& WorldSession::GetPlayerName() const
|
||||
@@ -332,7 +330,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
|
||||
//! the client to be in world yet. We will re-add the packets to the bottom of the queue and process them later.
|
||||
if (!m_playerRecentlyLogout)
|
||||
{
|
||||
// requeuePackets.push_back(packet);
|
||||
requeuePackets.push_back(packet);
|
||||
deletePacket = false;
|
||||
|
||||
LOG_DEBUG("network", "Re-enqueueing packet with opcode {} with with status STATUS_LOGGEDIN. "
|
||||
@@ -517,7 +515,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
|
||||
|
||||
if (!m_Socket)
|
||||
{
|
||||
return false;
|
||||
return false; //Will remove this session from the world session map
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1066,8 +1066,6 @@ public: // opcodes handlers
|
||||
uint32 GetOfflineTime() const { return _offlineTime; }
|
||||
bool IsKicked() const { return _kicked; }
|
||||
void SetKicked(bool val) { _kicked = val; }
|
||||
void SetShouldSetOfflineInDB(bool val) { _shouldSetOfflineInDB = val; }
|
||||
bool GetShouldSetOfflineInDB() const { return _shouldSetOfflineInDB; }
|
||||
bool IsSocketClosed() const;
|
||||
|
||||
/*
|
||||
@@ -1177,7 +1175,6 @@ private:
|
||||
ObjectGuid m_currentBankerGUID;
|
||||
uint32 _offlineTime;
|
||||
bool _kicked;
|
||||
bool _shouldSetOfflineInDB;
|
||||
// Packets cooldown
|
||||
time_t _calendarEventCreationCooldown;
|
||||
|
||||
|
||||
@@ -290,7 +290,6 @@ void World::AddSession_(WorldSession* s)
|
||||
{
|
||||
WorldSession* tmp = iter->second;
|
||||
_offlineSessions.erase(iter);
|
||||
tmp->SetShouldSetOfflineInDB(false);
|
||||
delete tmp;
|
||||
}
|
||||
oldSession->SetOfflineTime(GameTime::GetGameTime().count());
|
||||
@@ -298,7 +297,6 @@ void World::AddSession_(WorldSession* s)
|
||||
}
|
||||
else
|
||||
{
|
||||
oldSession->SetShouldSetOfflineInDB(false); // pussywizard: don't set offline in db because new session for that acc is already created
|
||||
delete oldSession;
|
||||
}
|
||||
}
|
||||
@@ -2975,7 +2973,6 @@ void World::UpdateSessions(uint32 diff)
|
||||
{
|
||||
WorldSession* tmp = iter->second;
|
||||
_offlineSessions.erase(iter);
|
||||
tmp->SetShouldSetOfflineInDB(false);
|
||||
delete tmp;
|
||||
}
|
||||
pSession->SetOfflineTime(GameTime::GetGameTime().count());
|
||||
@@ -2991,8 +2988,6 @@ void World::UpdateSessions(uint32 diff)
|
||||
if (!RemoveQueuedPlayer(pSession) && getIntConfig(CONFIG_INTERVAL_DISCONNECT_TOLERANCE))
|
||||
_disconnects[pSession->GetAccountId()] = GameTime::GetGameTime().count();
|
||||
_sessions.erase(itr);
|
||||
if (_offlineSessions.find(pSession->GetAccountId()) != _offlineSessions.end()) // pussywizard: don't set offline in db because offline session for that acc is present (character is in world)
|
||||
pSession->SetShouldSetOfflineInDB(false);
|
||||
delete pSession;
|
||||
}
|
||||
}
|
||||
@@ -3009,8 +3004,6 @@ void World::UpdateSessions(uint32 diff)
|
||||
if (!pSession->GetPlayer() || pSession->GetOfflineTime() + 60 < currTime || pSession->IsKicked())
|
||||
{
|
||||
_offlineSessions.erase(itr);
|
||||
if (_sessions.find(pSession->GetAccountId()) != _sessions.end())
|
||||
pSession->SetShouldSetOfflineInDB(false); // pussywizard: don't set offline in db because new session for that acc is already created
|
||||
delete pSession;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user