interest: Match data to Interest regardless of FreshnessPeriod/MustBeFresh

When Data is received from the wire it should match Interest with
MustBeFresh even if the Data packet doesn't specify FreshnessPeriod.

Refs: #5270
Change-Id: I2ce4d23062f6346ebcd54e2e3e6e5de5a927e516
This commit is contained in:
Alexander Afanasyev committed 2023-08-09 12:26:59 -04:00
1 parent 12b8aaa9f2
commit 0af48fb516
5 files changed
+12 -11

No files matched your search

+1 -1
View File
@@ -185,7 +185,7 @@ InMemoryStorage::insert(const Data& data, const time::milliseconds& mustBeFreshP
m_freeEntries.pop();
m_nPackets++;
entry->setData(data);
if (m_scheduler != nullptr && mustBeFreshProcessingWindow > ZERO_WINDOW) {
if (m_scheduler != nullptr && mustBeFreshProcessingWindow >= ZERO_WINDOW) {
entry->scheduleMarkStale(*m_scheduler, mustBeFreshProcessingWindow);
}
m_cache.insert(entry);
+8 -2
View File
@@ -134,8 +134,14 @@ public:
/** @brief Inserts a Data packet.
*
* @param data the packet to insert, must be signed and have wire encoding
* @param mustBeFreshProcessingWindow Beyond this time period after the data is inserted, the
* data can only be used to answer interest without MustBeFresh selector.
* @param mustBeFreshProcessingWindow Beyond this time period, the inserted data can
* only be used to answer interest without MustBeFresh. The value of
* mustBeFreshProcessingWindow is an application decision and it may or may not
* correspond to FreshnessPeriod.
*
* @note InMemoryStorage does not use the inserted data packet's FreshnessPeriod value.
* If the packet needs to be marked "stale" after application-defined period of time,
* the application must supply proper @p mustBeFreshProcessingWindow value.
*
* @note Packets are considered duplicate if the name with implicit digest matches.
* The new Data packet with the identical name, but a different payload
-5
View File
@@ -340,11 +340,6 @@ Interest::matchesData(const Data& data) const
return false;
}
// check MustBeFresh
if (getMustBeFresh() && data.getFreshnessPeriod() <= 0_ms) {
return false;
}
return true;
}
+2 -2
View File
@@ -562,8 +562,8 @@ BOOST_AUTO_TEST_CASE(PrefixName_NoCanBePrefix)
BOOST_AUTO_TEST_CASE(MustBeFresh)
{
insert(1, "/A/1"); // omitted FreshnessPeriod means FreshnessPeriod = 0 ms
insert(2, "/A/2", [] (Data& data) { data.setFreshnessPeriod(0_s); });
insert(1, "/A/1", nullptr, 0_ms); // omitted FreshnessPeriod means FreshnessPeriod = 0 ms
insert(2, "/A/2", [] (Data& data) { data.setFreshnessPeriod(0_s); }, 0_ms);
insert(3, "/A/3", [] (Data& data) { data.setFreshnessPeriod(1_s); }, 1_s);
insert(4, "/A/4", [] (Data& data) { data.setFreshnessPeriod(1_h); }, 1_h);
+1 -1
View File
@@ -659,7 +659,7 @@ BOOST_AUTO_TEST_CASE(MatchesData)
BOOST_CHECK_EQUAL(interest->matchesData(*data), true);
interest->setMustBeFresh(true);
BOOST_CHECK_EQUAL(interest->matchesData(*data), false); // violates MustBeFresh
BOOST_CHECK_EQUAL(interest->matchesData(*data), true);
data->setFreshnessPeriod(1_s);
BOOST_CHECK_EQUAL(interest->matchesData(*data), true);