From ca9781f94ea67dec6f07e347784490fa2dc1ce19 Mon Sep 17 00:00:00 2001 From: Rat Date: Tue, 31 Mar 2015 20:24:10 +0200 Subject: Core/Handlers: prevent sending empty packet in npc text query if no BroadcastTextID is set in db, to prevent wrong client caching. writes error instead --- src/server/game/Handlers/QueryHandler.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp index 2addf293986..6c79b1e9632 100644 --- a/src/server/game/Handlers/QueryHandler.cpp +++ b/src/server/game/Handlers/QueryHandler.cpp @@ -203,19 +203,23 @@ void WorldSession::HandleNpcTextQueryOpcode(WorldPackets::Query::QueryNPCText& p WorldPackets::Query::QueryNPCTextResponse response; response.TextID = packet.TextID; + bool hasText = false; if (gossip) { for (uint8 i = 0; i < MAX_GOSSIP_TEXT_OPTIONS; ++i) { response.Probabilities[i] = gossip->Options[i].Probability; response.BroadcastTextID[i] = gossip->Options[i].BroadcastTextID; + if (!hasText && gossip->Options[i].BroadcastTextID) + hasText = true; } response.Allow = true; } - - SendPacket(response.Write()); - + if (hasText) + SendPacket(response.Write()); + else + TC_LOG_ERROR("sql.sql", "HandleNpcTextQueryOpcode: no BroadcastTextID found for text %u in `npc_text table`", packet.TextID); TC_LOG_DEBUG("network", "WORLD: Sent SMSG_NPC_TEXT_UPDATE"); } -- cgit v1.2.3