[coap] force set message id for CON and NON types (#4255)

This commit is contained in:
Yakun Xu
2019-10-22 11:37:57 -07:00
committed by Jonathan Hui
parent 5858bd1d28
commit c4e7156f41
2 changed files with 17 additions and 11 deletions
+8 -9
View File
@@ -144,17 +144,17 @@ otError CoapBase::SendMessage(Message & aMessage,
Message * storedCopy = NULL;
uint16_t copyLength = 0;
if ((aMessage.GetType() == OT_COAP_TYPE_ACKNOWLEDGMENT || aMessage.GetType() == OT_COAP_TYPE_RESET) &&
aMessage.GetCode() != OT_COAP_CODE_EMPTY)
switch (aMessage.GetType())
{
case OT_COAP_TYPE_ACKNOWLEDGMENT:
mResponsesQueue.EnqueueResponse(aMessage, aMessageInfo);
}
// Set Message Id if it was not already set.
if (aMessage.GetMessageId() == 0 &&
(aMessage.GetType() == OT_COAP_TYPE_CONFIRMABLE || aMessage.GetType() == OT_COAP_TYPE_NON_CONFIRMABLE))
{
break;
case OT_COAP_TYPE_RESET:
assert(aMessage.GetCode() == OT_COAP_CODE_EMPTY);
break;
default:
aMessage.SetMessageId(mMessageId++);
break;
}
aMessage.Finish();
@@ -231,7 +231,6 @@ otError CoapBase::SendHeaderResponse(Message::Code aCode, const Message &aReques
case OT_COAP_TYPE_NON_CONFIRMABLE:
message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, aCode);
message->SetMessageId(mMessageId++);
break;
default:
+9 -2
View File
@@ -118,7 +118,10 @@ public:
aMessage.Init(OT_COAP_TYPE_ACKNOWLEDGMENT, aCode);
}
aMessage.SetMessageId(mSeparate ? 0 : mMessageId);
if (!mSeparate)
{
aMessage.SetMessageId(mMessageId);
}
return aMessage.SetToken(mToken, mTokenLength);
}
@@ -199,7 +202,11 @@ static void SendErrorMessage(Coap::CoapSecure & aCoapSecure,
message->Init(OT_COAP_TYPE_ACKNOWLEDGMENT, CoapCodeFromError(aError));
}
message->SetMessageId(aSeparate ? 0 : aRequest.GetMessageId());
if (!aSeparate)
{
message->SetMessageId(aRequest.GetMessageId());
}
SuccessOrExit(error = message->SetToken(aRequest.GetToken(), aRequest.GetTokenLength()));
SuccessOrExit(error = aCoapSecure.SendMessage(*message, aCoapSecure.GetPeerAddress()));