Fixed packet header decryption and zero size packet handling

This commit is contained in:
leak
2014-07-06 15:17:59 +02:00
parent 916800eb35
commit 5dc47243fc

View File

@@ -66,6 +66,9 @@ void WorldTcpSession::AsyncReadHeader()
{
ClientPktHeader* header = (ClientPktHeader*)&_readBuffer;
if (_worldSession)
_authCrypt.DecryptRecv((uint8*)header, sizeof(ClientPktHeader));
EndianConvertReverse(header->size);
EndianConvert(header->cmd);
@@ -95,9 +98,12 @@ void WorldTcpSession::AsyncReadData(size_t dataSize)
WorldPacket packet(opcode, header->size);
packet.resize(header->size);
if (header->size > 0)
{
packet.resize(header->size);
std::memcpy(packet.contents(), &_readBuffer[sizeof(ClientPktHeader)], header->size);
std::memcpy(packet.contents(), &_readBuffer[sizeof(ClientPktHeader)], header->size);
}
switch (opcode)
{
@@ -398,4 +404,4 @@ void WorldTcpSession::SendAuthResponseError(uint8 code)
packet << uint8(code);
AsyncWrite(packet);
}
}