aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2013-09-01 17:48:47 +0200
committerShauren <shauren.trinity@gmail.com>2013-09-01 17:48:47 +0200
commit6b60877e3e54e996fdfec01920050acf033d4c6f (patch)
tree6d378985e9d8f16dfeacf7def462e370838e4368
parentcdc71659e7e90a5b5a4933f72aece1c786dc969b (diff)
Core/NetworkIO: Fixed memory leak
-rw-r--r--src/server/game/Server/WorldSession.cpp11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index ffd8805901a..0e85815a054 100644
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -277,18 +277,15 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
{
if (!AntiDOS.EvaluateOpcode(*packet))
{
- delete packet;
- packet = NULL;
KickPlayer();
}
-
- if (packet && packet->GetOpcode() >= NUM_MSG_TYPES)
+ else if (packet->GetOpcode() >= NUM_MSG_TYPES)
{
TC_LOG_ERROR(LOG_FILTER_OPCODES, "Received non-existed opcode %s from %s", GetOpcodeNameForLogging(packet->GetOpcode()).c_str()
, GetPlayerInfo().c_str());
sScriptMgr->OnUnknownPacketReceive(m_Socket, WorldPacket(*packet));
}
- else if (packet)
+ else
{
OpcodeHandler &opHandle = opcodeTable[packet->GetOpcode()];
try
@@ -373,7 +370,7 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
break;
}
}
- catch(ByteBufferException &)
+ catch (ByteBufferException const&)
{
TC_LOG_ERROR(LOG_FILTER_GENERAL, "WorldSession::Update ByteBufferException occured while parsing a packet (opcode: %u) from client %s, accountid=%i. Skipped packet.",
packet->GetOpcode(), GetRemoteAddress().c_str(), GetAccountId());
@@ -383,6 +380,8 @@ bool WorldSession::Update(uint32 diff, PacketFilter& updater)
if (deletePacket)
delete packet;
+
+ deletePacket = true;
}
if (m_Socket && !m_Socket->IsClosed() && _warden)