mirror of
https://github.com/espressif/openthread.git
synced 2026-08-18 08:29:52 +00:00
[coap] force set message id for CON and NON types (#4255)
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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()));
|
||||
|
||||
Reference in New Issue
Block a user