diff --git a/src/core/thread/mesh_forwarder.cpp b/src/core/thread/mesh_forwarder.cpp index c9a57a130..94ee8b029 100644 --- a/src/core/thread/mesh_forwarder.cpp +++ b/src/core/thread/mesh_forwarder.cpp @@ -957,6 +957,7 @@ void MeshForwarder::HandleSentFrame(Mac::Frame &aFrame) { Mac::Address macDest; Child *child; + Neighbor *neighbor; mSendBusy = false; @@ -1004,6 +1005,17 @@ void MeshForwarder::HandleSentFrame(Mac::Frame &aFrame) } } + if (mSendMessage->GetType() == Message::kTypeMacDataPoll) + { + neighbor = mMle.GetParent(); + + if (neighbor->mState == Neighbor::kStateInvalid) + { + mPollTimer.Stop(); + mMle.BecomeDetached(); + } + } + if (mSendMessage->GetDirectTransmission() == false && mSendMessage->IsChildPending() == false) { mSendQueue.Dequeue(*mSendMessage);