Project

General

Profile

Actions

Bug #1771

closed

Incorrect logic in pit::Entry::canForwardTo

Added by Alex Afanasyev almost 10 years ago. Updated over 9 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
Category:
Forwarding
Target version:
Start date:
07/17/2014
Due date:
% Done:

0%

Estimated time:

Description

Part of the decision whether an Interest can be forwarded to face is related to incoming entries:

InRecordCollection::const_iterator inIt = std::find_if(
  m_inRecords.begin(), m_inRecords.end(),
  bind(&predicate_FaceRecord_ne_Face_and_unexpired, _1, &face, time::steady_clock::now()));
bool hasUnexpiredOtherInRecord = inIt != m_inRecords.end();
if (!hasUnexpiredOtherInRecord) {
  return false;
}

This code essentially prohibits Interests to be forwarded to any face from which Interest for the same name was recently received. While this effectively prevents Interests to be forwarded to the same face the Interest were received from, this logic is incorrect as it prevents other use cases. In particular, some ChronoSync operations would be harmed by this. Consider the following example

   +------+  /sync                +------+
   |      | >>>                   |      |
   |      | --------------------- |      |
   +------+                  <<<< +------+
      ^                     /sync     ^
      | ^                             | ^
      | ^                             | ^
      |                               |
     App                             App

Application sends /sync interest, which is propagated to the other node. The other node sends the same Interests, which should be propagated down to the application. The logic above prevent this to happen.


Related issues 1 (0 open1 closed)

Related to NFD - Feature #1756: Let strategy pick outgoing Interest packetClosedJunxiao Shi

Actions
Actions

Also available in: Atom PDF