Skip to content

Commit

Permalink
Pass SharedBuffer as value to increment reference count
Browse files Browse the repository at this point in the history
This should fix #6332
Refcount is not increased due to reference, it can make this refcount incorrect in a multithread context
  • Loading branch information
nerzhul committed Aug 28, 2017
1 parent 04158d0 commit 6fd8a27
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
10 changes: 5 additions & 5 deletions src/network/connectionthreads.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1098,7 +1098,7 @@ bool ConnectionReceiveThread::checkIncomingBuffers(Channel *channel,
}

SharedBuffer<u8> ConnectionReceiveThread::processPacket(Channel *channel,
SharedBuffer<u8> &packetdata, u16 peer_id, u8 channelnum, bool reliable)
SharedBuffer<u8> packetdata, u16 peer_id, u8 channelnum, bool reliable)
{
PeerHelper peer = m_connection->getPeerNoEx(peer_id);

Expand Down Expand Up @@ -1137,7 +1137,7 @@ const ConnectionReceiveThread::PacketTypeHandler
};

SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Control(Channel *channel,
SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum, bool reliable)
SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum, bool reliable)
{
if (packetdata.getSize() < 2)
throw InvalidIncomingDataException("packetdata.getSize() < 2");
Expand Down Expand Up @@ -1247,7 +1247,7 @@ SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Control(Channel *chan
}

SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Original(Channel *channel,
SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum, bool reliable)
SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum, bool reliable)
{
if (packetdata.getSize() <= ORIGINAL_HEADER_SIZE)
throw InvalidIncomingDataException
Expand All @@ -1261,7 +1261,7 @@ SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Original(Channel *cha
}

SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Split(Channel *channel,
SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum, bool reliable)
SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum, bool reliable)
{
Address peer_address;

Expand Down Expand Up @@ -1292,7 +1292,7 @@ SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Split(Channel *channe
}

SharedBuffer<u8> ConnectionReceiveThread::handlePacketType_Reliable(Channel *channel,
SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum, bool reliable)
SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum, bool reliable)
{
assert(channel != NULL);

Expand Down
12 changes: 6 additions & 6 deletions src/network/connectionthreads.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,26 +118,26 @@ class ConnectionReceiveThread : public Thread
channelnum: channel on which the packet was sent
reliable: true if recursing into a reliable packet
*/
SharedBuffer<u8> processPacket(Channel *channel, SharedBuffer<u8> &packetdata,
SharedBuffer<u8> processPacket(Channel *channel, SharedBuffer<u8> packetdata,
u16 peer_id, u8 channelnum, bool reliable);

SharedBuffer<u8> handlePacketType_Control(Channel *channel,
SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum,
SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum,
bool reliable);
SharedBuffer<u8> handlePacketType_Original(Channel *channel,
SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum,
SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum,
bool reliable);
SharedBuffer<u8> handlePacketType_Split(Channel *channel,
SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum,
SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum,
bool reliable);
SharedBuffer<u8> handlePacketType_Reliable(Channel *channel,
SharedBuffer<u8> &packetdata, Peer *peer, u8 channelnum,
SharedBuffer<u8> packetdata, Peer *peer, u8 channelnum,
bool reliable);

struct PacketTypeHandler
{
SharedBuffer<u8> (ConnectionReceiveThread::*handler)(Channel *channel,
SharedBuffer<u8> &packet, Peer *peer, u8 channelnum,
SharedBuffer<u8> packet, Peer *peer, u8 channelnum,
bool reliable);
};

Expand Down

0 comments on commit 6fd8a27

Please sign in to comment.