diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Server/WorldTcpSession.cpp | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/src/server/game/Server/WorldTcpSession.cpp b/src/server/game/Server/WorldTcpSession.cpp index aa72753dd9e..325d679c243 100644 --- a/src/server/game/Server/WorldTcpSession.cpp +++ b/src/server/game/Server/WorldTcpSession.cpp @@ -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); -}
\ No newline at end of file +} |