This can trigger unreproductible crashes due to concurrency problem on SharedBuffers
This fixes #6354
#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;
}
}
-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;
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;
};
// This adds the base headers to the data and makes a packet out of it
-BufferedPacket makePacket(Address &address, const SharedBuffer<u8> &data,
+BufferedPacket makePacket(Address &address, SharedBuffer<u8> data,
u32 protocol_id, u16 sender_peer_id, u8 channel);
// Depending on size, make a TYPE_ORIGINAL or TYPE_SPLIT packet
// Increments split_seqnum if a split packet is made
-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);
// Add the TYPE_RELIABLE header to the data
-SharedBuffer<u8> makeReliablePacket(const SharedBuffer<u8> &data, u16 seqnum);
+SharedBuffer<u8> makeReliablePacket(SharedBuffer<u8> data, u16 seqnum);
struct IncomingSplitPacket
{
}
bool ConnectionSendThread::rawSendAsPacket(u16 peer_id, u8 channelnum,
- const SharedBuffer<u8> &data, bool reliable)
+ SharedBuffer<u8> data, bool reliable)
{
PeerHelper peer = m_connection->getPeerNoEx(peer_id);
if (!peer) {
private:
void runTimeouts(float dtime);
void rawSend(const BufferedPacket &packet);
- bool rawSendAsPacket(u16 peer_id, u8 channelnum, const SharedBuffer<u8> &data,
+ bool rawSendAsPacket(u16 peer_id, u8 channelnum, SharedBuffer<u8> data,
bool reliable);
void processReliableCommand(ConnectionCommand &c);