diff --git a/libraries/shared/src/NetworkPacket.cpp b/libraries/shared/src/NetworkPacket.cpp index 6319a5ab1a..0acabbac58 100644 --- a/libraries/shared/src/NetworkPacket.cpp +++ b/libraries/shared/src/NetworkPacket.cpp @@ -20,7 +20,6 @@ NetworkPacket::NetworkPacket() { NetworkPacket::~NetworkPacket() { // nothing to do - printf("NetworkPacket::~NetworkPacket() this=%p this.getData()=%p\n", this, getData()); } void NetworkPacket::copyContents(const sockaddr& address, const unsigned char* packetData, ssize_t packetLength) { diff --git a/libraries/shared/src/ReceivedPacketProcessor.cpp b/libraries/shared/src/ReceivedPacketProcessor.cpp index 7e8ffec44f..c1d0a84f0f 100644 --- a/libraries/shared/src/ReceivedPacketProcessor.cpp +++ b/libraries/shared/src/ReceivedPacketProcessor.cpp @@ -31,16 +31,13 @@ bool ReceivedPacketProcessor::process() { usleep(RECEIVED_THREAD_SLEEP_INTERVAL); } while (_packets.size() > 0) { - NetworkPacket& packet = _packets.front(); - printf("ReceivedPacketProcessor::process() calling processPacket() NetworkPacket=%p packet.getData()=%p packet.getLength()=%ld\n", - &packet, packet.getData(), packet.getLength() ); - - processPacket(packet.getAddress(), packet.getData(), packet.getLength()); - - lock(); - _packets.erase(_packets.begin()); - unlock(); + lock(); // lock to make sure nothing changes on us + NetworkPacket& packet = _packets.front(); // get the oldest packet + NetworkPacket temporary = packet; // make a copy of the packet in case the vector is resized on us + _packets.erase(_packets.begin()); // remove the oldest packet + unlock(); // let others add to the packets + processPacket(temporary.getAddress(), temporary.getData(), temporary.getLength()); // process our temporary copy } return isStillRunning(); // keep running till they terminate us }