mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/bnetserver: Fixed crash happening when sending packets larger than 4096 bytes
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user