diff --git a/src/core/thread/mesh_forwarder.cpp b/src/core/thread/mesh_forwarder.cpp index e3f149178..0697f1310 100644 --- a/src/core/thread/mesh_forwarder.cpp +++ b/src/core/thread/mesh_forwarder.cpp @@ -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);