Clear stale pending expedition lockouts

Delete pending lockouts of members on expedition creation

Delete pending lockouts when all members removed from expedition

This fixes an edge case where members could incorrectly be assigned
pending lockouts that were never cleared from the database (from a
server crash or other situation) after entering another dz.
This commit is contained in:
hg
2020-06-13 21:28:21 -04:00
parent 6165550133
commit 17be2bf2f7
5 changed files with 32 additions and 2 deletions
+6
View File
@@ -310,7 +310,9 @@ void Expedition::SaveMembers(ExpeditionRequest& request)
{
m_member_id_history.emplace(member.char_id);
}
ExpeditionDatabase::InsertMembers(m_id, m_members);
ExpeditionDatabase::DeleteAllMembersPendingLockouts(m_members);
m_dynamiczone.SaveInstanceMembersToDatabase(m_member_id_history); // all are current members here
}
@@ -504,10 +506,13 @@ void Expedition::RemoveAllMembers(bool enable_removal_timers)
{
m_dynamiczone.RemoveAllCharacters(enable_removal_timers);
ExpeditionDatabase::DeleteAllMembersPendingLockouts(m_members);
ExpeditionDatabase::UpdateAllMembersRemoved(m_id);
SendUpdatesToZoneMembers(true);
SendWorldExpeditionUpdate(ServerOP_ExpeditionMembersRemoved);
m_members.clear();
}
bool Expedition::RemoveMember(const std::string& remove_char_name)
@@ -1626,6 +1631,7 @@ void Expedition::HandleWorldMessage(ServerPacket* pack)
if (expedition)
{
expedition->SendUpdatesToZoneMembers(true);
expedition->m_members.clear();
}
}
break;