1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Network part requires SharedBuffers to be pass as value

This can trigger unreproductible crashes due to concurrency problem on SharedBuffers

This fixes #6354
This commit is contained in:
Loic Blot 2017-09-03 19:01:53 +02:00
parent 2ac5a45faa
commit eabf04bd34
No known key found for this signature in database
GPG key ID: EFAA458E8C153987
4 changed files with 8 additions and 10 deletions

View file

@ -55,7 +55,7 @@ std::mutex log_message_mutex;
#define PING_TIMEOUT 5.0
BufferedPacket makePacket(Address &address, const SharedBuffer<u8> &data,
BufferedPacket makePacket(Address &address, SharedBuffer<u8> data,
u32 protocol_id, u16 sender_peer_id, u8 channel)
{
u32 packet_size = data.getSize() + BASE_HEADER_SIZE;
@ -125,7 +125,7 @@ void makeSplitPacket(const SharedBuffer<u8> &data, u32 chunksize_max, u16 seqnum
}
}
void makeAutoSplitPacket(const SharedBuffer<u8> &data, u32 chunksize_max,
void makeAutoSplitPacket(SharedBuffer<u8> data, u32 chunksize_max,
u16 &split_seqnum, std::list<SharedBuffer<u8>> *list)
{
u32 original_header_size = 1;
@ -139,9 +139,7 @@ void makeAutoSplitPacket(const SharedBuffer<u8> &data, u32 chunksize_max,
list->push_back(makeOriginalPacket(data));
}
SharedBuffer<u8> makeReliablePacket(
const SharedBuffer<u8> &data,
u16 seqnum)
SharedBuffer<u8> makeReliablePacket(SharedBuffer<u8> data, u16 seqnum)
{
u32 header_size = 3;
u32 packet_size = data.getSize() + header_size;