highfidelity/hifi — pull request #3045 by wangyix (2014-06-18 21:03:55+00:00)
Title: Changed octree data NACK handling to repeatedly NACK missing seq numbers, like edit NACKs 

When NACKs were added for octree data packets, each missing sequence number would be NACKed exactly once, regardless if it was ever recovered. Now, a missing sequence number is NACKed until it's recovered. This same behavior is implemented in NACKs for edit packets from my previous PR.

Cause: when missing sequence numbers are NACKed only once, if that NACK packet is lost or if the re-sent packet is lost, that sequence number will not be NACKed again, which means that packet will never be recovered.

Fix: the code for handling octree data packet NACKs has been updated to mirror the behavior for handling octree edit NACKs. Basically, octree data NACK packets are now constructed by directly reading _missingSequenceNumbers.

Testing: code was added to randomly drop octree data packets, including ones that are re-sent. When running local ACs, all packets were observed to be recovered eventually.