MeshForwarder: Check if child is marked in message child mask before decrease of mQueuedIndirectMessageCnt (#1455)

This commit is contained in:
Abtin Keshavarzian
2017-03-10 20:21:25 -08:00
committed by Jonathan Hui
parent c7dc5f58b9
commit 0d4da3a0f9
+5 -2
View File
@@ -1588,6 +1588,7 @@ void MeshForwarder::HandleSentFrame(Mac::Frame &aFrame, ThreadError aError)
Mac::Address macDest;
Child *child;
Neighbor *neighbor;
uint8_t childIndex;
mSendBusy = false;
@@ -1696,10 +1697,12 @@ void MeshForwarder::HandleSentFrame(Mac::Frame &aFrame, ThreadError aError)
child->mIndirectSendInfo.mMessage = NULL;
}
mSendMessage->ClearChildMask(mNetif.GetMle().GetChildIndex(*child));
childIndex = mNetif.GetMle().GetChildIndex(*child);
if ((child->mMode & Mle::ModeTlv::kModeRxOnWhenIdle) == 0)
if (mSendMessage->GetChildMask(childIndex))
{
mSendMessage->ClearChildMask(childIndex);
child->mQueuedIndirectMessageCnt--;
otLogDebgMac(GetInstance(), "Sent to child (0x%x), still queued message (%d)",
child->mValid.mRloc16, child->mQueuedIndirectMessageCnt);