Handle outstanding MAC requests when interface is disabled. (#689)

This commit is contained in:
Jonathan Hui
2016-09-26 15:13:20 -07:00
committed by GitHub
parent ed6d72eccd
commit 1dd6979758
2 changed files with 11 additions and 10 deletions
+2 -3
View File
@@ -657,7 +657,7 @@ exit:
if (error != kThreadError_None)
{
assert(false);
TransmitDoneTask(false, kThreadError_Abort);
}
}
@@ -801,9 +801,8 @@ void Mac::SentFrame(ThreadError aError)
switch (aError)
{
case kThreadError_None:
break;
case kThreadError_ChannelAccessFailure:
case kThreadError_Abort:
break;
case kThreadError_NoAck:
+9 -7
View File
@@ -126,6 +126,7 @@ ThreadError MeshForwarder::Stop()
}
mEnabled = false;
mSendMessage = NULL;
mMac.SetRxOnWhenIdle(false);
exit:
@@ -811,10 +812,12 @@ ThreadError MeshForwarder::HandleFrameRequest(void *aContext, Mac::Frame &aFrame
ThreadError MeshForwarder::HandleFrameRequest(Mac::Frame &aFrame)
{
ThreadError error = kThreadError_None;
Mac::Address macDest;
Child *child = NULL;
VerifyOrExit(mSendMessage != NULL, error = kThreadError_Abort);
mSendBusy = true;
assert(mSendMessage != NULL);
switch (mSendMessage->GetType())
{
@@ -865,7 +868,8 @@ ThreadError MeshForwarder::HandleFrameRequest(Mac::Frame &aFrame)
dump("sent frame", aFrame.GetHeader(), aFrame.GetLength());
#endif
return kThreadError_None;
exit:
return error;
}
ThreadError MeshForwarder::SendPoll(Message &aMessage, Mac::Frame &aFrame)
@@ -1131,11 +1135,7 @@ void MeshForwarder::HandleSentFrame(Mac::Frame &aFrame, ThreadError aError)
Neighbor *neighbor;
mSendBusy = false;
if (!mEnabled)
{
ExitNow();
}
VerifyOrExit(mSendMessage != NULL, ;);
mSendMessage->SetOffset(mMessageNextOffset);
@@ -1240,6 +1240,7 @@ void MeshForwarder::HandleSentFrame(Mac::Frame &aFrame, ThreadError aError)
{
mSendQueue.Dequeue(*mSendMessage);
mSendMessage->Free();
mSendMessage = NULL;
}
mScheduleTransmissionTask.Post();
@@ -1271,6 +1272,7 @@ void MeshForwarder::HandleDiscoverTimer(void)
{
mSendQueue.Dequeue(*mSendMessage);
mSendMessage->Free();
mSendMessage = NULL;
mMac.SetChannel(mRestoreChannel);
mScanning = false;
mMle.HandleDiscoverComplete();