Project

General

Profile

Bug #3545

Updated by Junxiao Shi over 8 years ago

`pit::Entry::hasUnexpiredOutRecords` determines whether a PIT entry has any out-record that is still waiting for Data.   
 A use case is in `RetxSuppressionFixed` and `RetxSuppressionExponential`, in which a retransmitted Interest would not be suppressed if there isn't an out-record waiting for Data. 

 Currently, this function returns true if any out-record's timestamp plus the InterestLifetime is less than now. 
 In other words, an Interest has been sent to the upstream, InterestLifetime is not exceeded, and Data has not come back (when Data comes back, the out-record is deleted within incoming Data pipeline).   
 However, if Nack comes back in response to the Interest, the out-record is not deleted within incoming Nack pipeline. 
 In this case, this function still returns true as if an out-record is waiting for Data, but no Data would ever come back (at upstream node outgoing Nack pipeline deletes the in-record when sending Nack). 

 Thus, `pit::Entry::hasUnexpiredOutRecords` should take incoming Nack into consideration, and return true only if the PIT entry has any out-record that is not only unexpired in terms of InterestLifetime, but also not yet Nacked.   
 The function shall may be renamed to `fw::hasPendingOutRecords` `hasPendingOutRecords` to reflect the semantics change.

Back