diff options
author | Shauren <shauren.trinity@gmail.com> | 2019-07-21 16:32:49 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2019-07-21 16:32:49 +0200 |
commit | 3058d8c5ab50aa648a028fa38e64e1b72ae9305a (patch) | |
tree | c32cd626797995f4ff501257cb84aafcfd639bee | |
parent | f7089babf51d4ebd0d903e2e8ac098f38d3391fc (diff) |
Core/bnetserver: Fixed crash happening when sending packets larger than 4096 bytes
-rw-r--r-- | src/server/bnetserver/Server/Session.cpp | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/src/server/bnetserver/Server/Session.cpp b/src/server/bnetserver/Server/Session.cpp index 7ebb7abb58b..20ca5a8c603 100644 --- a/src/server/bnetserver/Server/Session.cpp +++ b/src/server/bnetserver/Server/Session.cpp @@ -149,14 +149,14 @@ void Battlenet::Session::SendResponse(uint32 token, pb::Message const* response) uint16 headerSize = header.ByteSize(); EndianConvertReverse(headerSize); - MessageBuffer packet; + MessageBuffer packet(sizeof(headerSize) + header.GetCachedSize() + response->GetCachedSize()); packet.Write(&headerSize, sizeof(headerSize)); uint8* ptr = packet.GetWritePointer(); - packet.WriteCompleted(header.ByteSize()); - header.SerializeToArray(ptr, header.ByteSize()); + packet.WriteCompleted(header.GetCachedSize()); + header.SerializePartialToArray(ptr, header.GetCachedSize()); ptr = packet.GetWritePointer(); - packet.WriteCompleted(response->ByteSize()); - response->SerializeToArray(ptr, response->ByteSize()); + packet.WriteCompleted(response->GetCachedSize()); + response->SerializeToArray(ptr, response->GetCachedSize()); AsyncWrite(&packet); } @@ -171,11 +171,11 @@ void Battlenet::Session::SendResponse(uint32 token, uint32 status) uint16 headerSize = header.ByteSize(); EndianConvertReverse(headerSize); - MessageBuffer packet; + MessageBuffer packet(sizeof(headerSize) + header.GetCachedSize()); packet.Write(&headerSize, sizeof(headerSize)); uint8* ptr = packet.GetWritePointer(); - packet.WriteCompleted(header.ByteSize()); - header.SerializeToArray(ptr, header.ByteSize()); + packet.WriteCompleted(header.GetCachedSize()); + header.SerializeToArray(ptr, header.GetCachedSize()); AsyncWrite(&packet); } @@ -192,14 +192,14 @@ void Battlenet::Session::SendRequest(uint32 serviceHash, uint32 methodId, pb::Me uint16 headerSize = header.ByteSize(); EndianConvertReverse(headerSize); - MessageBuffer packet; + MessageBuffer packet(sizeof(headerSize) + header.GetCachedSize() + request->GetCachedSize()); packet.Write(&headerSize, sizeof(headerSize)); uint8* ptr = packet.GetWritePointer(); - packet.WriteCompleted(header.ByteSize()); - header.SerializeToArray(ptr, header.ByteSize()); + packet.WriteCompleted(header.GetCachedSize()); + header.SerializeToArray(ptr, header.GetCachedSize()); ptr = packet.GetWritePointer(); - packet.WriteCompleted(request->ByteSize()); - request->SerializeToArray(ptr, request->ByteSize()); + packet.WriteCompleted(request->GetCachedSize()); + request->SerializeToArray(ptr, request->GetCachedSize()); AsyncWrite(&packet); } |