refinement/improvement to inactive sender timeout/reactivation

pull/72/head
bebopagogo 2022-08-20 22:52:05 -04:00
parent d1d69f7820
commit 5872195eaa
1 changed files with 4 additions and 2 deletions

View File

@ -15,7 +15,6 @@ NormNode::~NormNode()
{ {
} }
void NormNode::Retain() void NormNode::Retain()
{ {
reference_count++; reference_count++;
@ -2206,6 +2205,8 @@ void NormSenderNode::RepairCheck(NormObject::CheckLevel checkLevel,
if (NormObject::BLIND_CHECK == checkLevel) if (NormObject::BLIND_CHECK == checkLevel)
{ {
// A "blind" check is used upon sender activity timeout or reactivation
// to NACK for repairs based on prior state.
ASSERT(objectId == max_pending_object); ASSERT(objectId == max_pending_object);
NormObject* objMax = rx_table.Find(objectId); NormObject* objMax = rx_table.Find(objectId);
if (NULL != objMax) if (NULL != objMax)
@ -2886,7 +2887,8 @@ bool NormSenderNode::OnActivityTimeout(ProtoTimer& /*theTimer*/)
// activity timeout (here) or upon reactivation of a sender when seeing a NORM_CMD message // activity timeout (here) or upon reactivation of a sender when seeing a NORM_CMD message
// instead of a NORM_DATA message. Since NORM_CMD doesn't provide objectId, etc information, // instead of a NORM_DATA message. Since NORM_CMD doesn't provide objectId, etc information,
// thus a "blind" check is needed. // thus a "blind" check is needed.
RepairCheck(NormObject::BLIND_CHECK, max_pending_object, 0, 0); if (rx_pending_mask.IsSet())
RepairCheck(NormObject::BLIND_CHECK, max_pending_object, 0, 0);
} }
// We manually manage the "repeat_count" here to avoid the // We manually manage the "repeat_count" here to avoid the
// case where "bursty" receiver scheduling may lead to false // case where "bursty" receiver scheduling may lead to false