mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-26 03:42:37 +01:00
Core/PacketIO: Fixed wrong FlushBits usage (mostly related to string lengths)
This commit is contained in:
@@ -60,6 +60,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
|
||||
_worldPacket << uint8(Result);
|
||||
_worldPacket.WriteBit(SuccessInfo.is_initialized());
|
||||
_worldPacket.WriteBit(WaitInfo.is_initialized());
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
if (SuccessInfo)
|
||||
{
|
||||
@@ -83,6 +84,8 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
|
||||
_worldPacket.WriteBit(realm.IsInternalRealm);
|
||||
_worldPacket.WriteBits(realm.RealmNameActual.length(), 8);
|
||||
_worldPacket.WriteBits(realm.RealmNameNormalized.length(), 8);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(realm.RealmNameActual);
|
||||
_worldPacket.WriteString(realm.RealmNameNormalized);
|
||||
}
|
||||
@@ -111,6 +114,8 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
|
||||
|
||||
_worldPacket.WriteBits(templat.Name.length(), 7);
|
||||
_worldPacket.WriteBits(templat.Description.length(), 10);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(templat.Name);
|
||||
_worldPacket.WriteString(templat.Description);
|
||||
}
|
||||
@@ -120,6 +125,7 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
|
||||
_worldPacket.WriteBit(SuccessInfo->NumPlayersHorde.is_initialized());
|
||||
_worldPacket.WriteBit(SuccessInfo->NumPlayersAlliance.is_initialized());
|
||||
_worldPacket.WriteBit(SuccessInfo->IsVeteranTrial);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
if (SuccessInfo->NumPlayersHorde)
|
||||
_worldPacket << uint16(*SuccessInfo->NumPlayersHorde);
|
||||
@@ -132,9 +138,9 @@ WorldPacket const* WorldPackets::Auth::AuthResponse::Write()
|
||||
{
|
||||
_worldPacket << uint32(WaitInfo->WaitCount);
|
||||
_worldPacket.WriteBit(WaitInfo->HasFCM);
|
||||
_worldPacket.FlushBits();
|
||||
}
|
||||
|
||||
_worldPacket.FlushBits();
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
|
||||
@@ -154,6 +154,8 @@ WorldPacket const* WorldPackets::Character::EnumCharactersResult::Write()
|
||||
_worldPacket.WriteBit(charInfo.FirstLogin);
|
||||
_worldPacket.WriteBit(charInfo.BoostInProgress);
|
||||
_worldPacket.WriteBits(charInfo.unkWod61x, 5);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(charInfo.Name);
|
||||
}
|
||||
|
||||
@@ -215,11 +217,13 @@ WorldPacket const* WorldPackets::Character::CharacterRenameResult::Write()
|
||||
_worldPacket << uint8(Result);
|
||||
_worldPacket.WriteBit(Guid.is_initialized());
|
||||
_worldPacket.WriteBits(Name.length(), 6);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
if (Guid)
|
||||
_worldPacket << *Guid;
|
||||
|
||||
_worldPacket.WriteString(Name);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -305,19 +309,21 @@ WorldPacket const* WorldPackets::Character::GenerateRandomCharacterNameResult::W
|
||||
{
|
||||
_worldPacket.WriteBit(Success);
|
||||
_worldPacket.WriteBits(Name.length(), 6);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(Name);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
void WorldPackets::Character::ReorderCharacters::Read()
|
||||
{
|
||||
uint32 count = std::min<uint32>(_worldPacket.ReadBits(9), sWorld->getIntConfig(CONFIG_CHARACTERS_PER_REALM));
|
||||
while (count--)
|
||||
Entries.resize(count);
|
||||
for (ReorderInfo& reorderInfo : Entries)
|
||||
{
|
||||
ReorderInfo reorderInfo;
|
||||
_worldPacket >> reorderInfo.PlayerGUID;
|
||||
_worldPacket >> reorderInfo.NewPosition;
|
||||
Entries.emplace_back(reorderInfo);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -165,6 +165,8 @@ WorldPacket const* WorldPackets::Chat::Chat::Write()
|
||||
_worldPacket.WriteBits(_ChatFlags, 11);
|
||||
_worldPacket.WriteBit(HideChatLog);
|
||||
_worldPacket.WriteBit(FakeSenderName);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(SenderName);
|
||||
_worldPacket.WriteString(TargetName);
|
||||
_worldPacket.WriteString(Prefix);
|
||||
@@ -203,13 +205,18 @@ WorldPacket const* WorldPackets::Chat::STextEmote::Write()
|
||||
WorldPacket const* WorldPackets::Chat::PrintNotification::Write()
|
||||
{
|
||||
_worldPacket.WriteBits(NotifyText.size(), 12);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(NotifyText);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
WorldPacket const* WorldPackets::Chat::ChatPlayerNotfound::Write()
|
||||
{
|
||||
_worldPacket.WriteBits(Name.length(), 9);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(Name);
|
||||
|
||||
return &_worldPacket;
|
||||
|
||||
@@ -40,9 +40,10 @@ WorldPacket const* WorldPackets::EquipmentSet::LoadEquipmentSet::Write()
|
||||
|
||||
_worldPacket.WriteBits(equipSet->SetName.length(), 8);
|
||||
_worldPacket.WriteBits(equipSet->SetIcon.length(), 9);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(equipSet->SetName);
|
||||
_worldPacket.WriteString(equipSet->SetIcon);
|
||||
_worldPacket.FlushBits();
|
||||
}
|
||||
|
||||
return &_worldPacket;
|
||||
|
||||
@@ -30,6 +30,7 @@ WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write()
|
||||
{
|
||||
_worldPacket << GuildGuid;
|
||||
_worldPacket.WriteBit(Info.is_initialized());
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
if (Info)
|
||||
{
|
||||
@@ -48,13 +49,16 @@ WorldPacket const* WorldPackets::Guild::QueryGuildInfoResponse::Write()
|
||||
_worldPacket << uint32(rank.RankOrder);
|
||||
|
||||
_worldPacket.WriteBits(rank.RankName.size(), 7);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(rank.RankName);
|
||||
}
|
||||
|
||||
_worldPacket.WriteBits(Info->GuildName.size(), 7);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(Info->GuildName);
|
||||
}
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
@@ -69,7 +73,6 @@ WorldPacket const* WorldPackets::Guild::GuildRoster::Write()
|
||||
for (GuildRosterMemberData const& member : MemberData)
|
||||
_worldPacket << member;
|
||||
|
||||
_worldPacket.ResetBitPos();
|
||||
_worldPacket.WriteBits(WelcomeText.length(), 10);
|
||||
_worldPacket.WriteBits(InfoText.length(), 10);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
@@ -176,8 +176,6 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Query::PlayerGuidLookupDa
|
||||
data << uint8(lookupData.Level);
|
||||
data.WriteString(lookupData.Name);
|
||||
|
||||
data.FlushBits();
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
@@ -210,6 +208,8 @@ WorldPacket const* WorldPackets::Query::QueryPageTextResponse::Write()
|
||||
_worldPacket << Info.ID;
|
||||
_worldPacket << Info.NextPageID;
|
||||
_worldPacket.WriteBits(Info.Text.length(), 12);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(Info.Text);
|
||||
}
|
||||
|
||||
@@ -290,6 +290,7 @@ WorldPacket const* WorldPackets::Query::QueryGameObjectResponse::Write()
|
||||
{
|
||||
_worldPacket << GameObjectID;
|
||||
_worldPacket.WriteBit(Allow);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
if (Allow)
|
||||
{
|
||||
|
||||
@@ -149,10 +149,12 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
|
||||
_worldPacket << questObjective.UnkFloat;
|
||||
|
||||
_worldPacket << int32(questObjective.VisualEffects.size());
|
||||
for (auto& visualEffect : questObjective.VisualEffects)
|
||||
for (int32 visualEffect : questObjective.VisualEffects)
|
||||
_worldPacket << visualEffect;
|
||||
|
||||
_worldPacket.WriteBits(questObjective.Description.size(), 8);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(questObjective.Description);
|
||||
}
|
||||
|
||||
@@ -165,6 +167,7 @@ WorldPacket const* WorldPackets::Quest::QueryQuestInfoResponse::Write()
|
||||
_worldPacket.WriteBits(Info.PortraitTurnInText.size(), 10);
|
||||
_worldPacket.WriteBits(Info.PortraitTurnInName.size(), 8);
|
||||
_worldPacket.WriteBits(Info.QuestCompletionLog.size(), 11);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(Info.LogTitle);
|
||||
_worldPacket.WriteString(Info.LogDescription);
|
||||
@@ -277,6 +280,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverOfferRewardMessage::Write()
|
||||
_worldPacket.WriteBits(PortraitGiverName.size(), 8);
|
||||
_worldPacket.WriteBits(PortraitGiverText.size(), 10);
|
||||
_worldPacket.WriteBits(PortraitTurnInName.size(), 8);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(QuestTitle);
|
||||
_worldPacket.WriteString(RewardText);
|
||||
@@ -362,6 +366,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverQuestDetails::Write()
|
||||
_worldPacket.WriteBit(DisplayPopup);
|
||||
_worldPacket.WriteBit(StartCheat);
|
||||
_worldPacket.WriteBit(AutoLaunched);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(QuestTitle);
|
||||
_worldPacket.WriteString(DescriptionText);
|
||||
@@ -406,6 +411,7 @@ WorldPacket const* WorldPackets::Quest::QuestGiverRequestItems::Write()
|
||||
|
||||
_worldPacket.WriteBits(QuestTitle.size(), 9);
|
||||
_worldPacket.WriteBits(CompletionText.size(), 12);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(QuestTitle);
|
||||
_worldPacket.WriteString(CompletionText);
|
||||
@@ -477,6 +483,8 @@ WorldPacket const* WorldPackets::Quest::QuestConfirmAcceptResponse::Write()
|
||||
_worldPacket << InitiatedBy;
|
||||
|
||||
_worldPacket.WriteBits(QuestTitle.size(), 10);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(QuestTitle);
|
||||
|
||||
return &_worldPacket;
|
||||
|
||||
@@ -30,6 +30,7 @@ void WorldPackets::RaF::GrantLevel::Read()
|
||||
WorldPacket const* WorldPackets::RaF::ProposeLevelGrant::Write()
|
||||
{
|
||||
_worldPacket << Sender;
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -39,6 +40,8 @@ WorldPacket const* WorldPackets::RaF::ReferAFriendFailure::Write()
|
||||
// Client uses this string only if Reason == ERR_REFER_A_FRIEND_NOT_IN_GROUP || Reason == ERR_REFER_A_FRIEND_SUMMON_OFFLINE_S
|
||||
// but always reads it from packet
|
||||
_worldPacket.WriteBits(Str.length(), 6);
|
||||
_worldPacket.FlushBits();
|
||||
_worldPacket.WriteString(Str);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -121,6 +121,8 @@ WorldPacket const* WorldPackets::System::SetTimeZoneInformation::Write()
|
||||
{
|
||||
_worldPacket.WriteBits(ServerTimeTZ.length(), 7);
|
||||
_worldPacket.WriteBits(GameTimeTZ.length(), 7);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(ServerTimeTZ);
|
||||
_worldPacket.WriteString(GameTimeTZ);
|
||||
|
||||
|
||||
@@ -70,6 +70,7 @@ WorldPacket const* WorldPackets::Ticket::GMTicketGetTicketResponse::Write()
|
||||
{
|
||||
_worldPacket << Result;
|
||||
_worldPacket.WriteBit(Info.is_initialized());
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
if (Info)
|
||||
{
|
||||
@@ -84,12 +85,12 @@ WorldPacket const* WorldPackets::Ticket::GMTicketGetTicketResponse::Write()
|
||||
|
||||
_worldPacket.WriteBits(Info->TicketDescription.size(), 11);
|
||||
_worldPacket.WriteBits(Info->WaitTimeOverrideMessage.size(), 10);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(Info->TicketDescription);
|
||||
_worldPacket.WriteString(Info->WaitTimeOverrideMessage);
|
||||
}
|
||||
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -25,9 +25,10 @@ void WorldPackets::Who::WhoIsRequest::Read()
|
||||
WorldPacket const* WorldPackets::Who::WhoIsResponse::Write()
|
||||
{
|
||||
_worldPacket.WriteBits(AccountName.length(), 11);
|
||||
_worldPacket.WriteString(AccountName);
|
||||
_worldPacket.FlushBits();
|
||||
|
||||
_worldPacket.WriteString(AccountName);
|
||||
|
||||
return &_worldPacket;
|
||||
}
|
||||
|
||||
@@ -102,10 +103,10 @@ ByteBuffer& operator<<(ByteBuffer& data, WorldPackets::Who::WhoEntry const& entr
|
||||
|
||||
data.WriteBits(entry.GuildName.length(), 7);
|
||||
data.WriteBit(entry.IsGM);
|
||||
data.WriteString(entry.GuildName);
|
||||
|
||||
data.FlushBits();
|
||||
|
||||
data.WriteString(entry.GuildName);
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user