aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRat <gmstreetrat@gmail.com>2015-03-31 20:24:10 +0200
committerRat <gmstreetrat@gmail.com>2015-03-31 20:24:10 +0200
commitca9781f94ea67dec6f07e347784490fa2dc1ce19 (patch)
tree0ced7fc8e28f4d9083e43c40f294294433907d43
parente734146a6f813c2996c217bc4a0997fe165f604f (diff)
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
-rw-r--r--src/server/game/Handlers/QueryHandler.cpp10
1 files changed, 7 insertions, 3 deletions
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");
}