Core/PacketIO: Fixed wrong FlushBits usage (mostly related to string lengths)

This commit is contained in:
Shauren
2015-04-30 19:42:13 +02:00
parent 10a1aff63f
commit e0746e49b3
11 changed files with 53 additions and 14 deletions

View File

@@ -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;
}

View File

@@ -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);
}
}

View File

@@ -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;

View File

@@ -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;

View File

@@ -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();

View File

@@ -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)
{

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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;
}