Bug #1733
Updated by Junxiao Shi over 10 years ago
Steps to reproduce: 1. start NFD 2. create two faces to two different networks that are not interconnected 3. register the same prefix toward these two faces 4. set broadcast strategy for the prefix 5. send Interests continuously at a slow rate; the producer of these Interests is reachable via only one face 6. observe nPitEntries counter from `nfd-status` Expected: nPitEntries is relatively stable Actual: nPitEntries is continuously increasing Root cause: `Forwarder::setStragglerTimer` has a conditional if (pitEntry->hasUnexpiredOutRecords()) { NFD_LOG_DEBUG("setStragglerTimer " << pitEntry->getName() << " cannot set StragglerTimer when an OutRecord is pending"); return; } This condition is wrong. The straggler timer keeps the PIT entry a "short while" for loop detection and measurement purposes. The 100ms delay is sufficient for these purposes. It should not wait for all OutRecords to expire. To make things worse, due to this condition, the straggler timer is never set again, and the PIT entry would be kept forever.