[coap] ensure CoAP control messages are prioritized (#4962)

This commit is contained in:
Duda, Lukasz
2020-05-14 09:09:17 -07:00
committed by Jonathan Hui
parent 7edb455330
commit 495f76571f
3 changed files with 16 additions and 4 deletions
+12
View File
@@ -339,6 +339,18 @@ public:
*/
Message *NewMessage(const otMessageSettings *aSettings = NULL);
/**
* This method creates a new message with a CoAP header that has Network Control priority level.
*
* @returns A pointer to the message or NULL if failed to allocate message.
*
*/
Message *NewPriorityMessage(void)
{
otMessageSettings settings = {true, static_cast<otMessagePriority>(Message::kPriorityNet)};
return NewMessage(&settings);
}
/**
* This method sends a CoAP message with custom transmission parameters.
*
+2 -2
View File
@@ -553,7 +553,7 @@ otError AddressResolver::SendAddressQuery(const Ip6::Address &aEid)
Coap::Message * message;
Ip6::MessageInfo messageInfo;
VerifyOrExit((message = Get<Coap::Coap>().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS);
VerifyOrExit((message = Get<Coap::Coap>().NewPriorityMessage()) != NULL, error = OT_ERROR_NO_BUFS);
message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST);
SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_QUERY));
@@ -837,7 +837,7 @@ void AddressResolver::SendAddressQueryResponse(const Ip6::Address &aTarget,
Coap::Message * message;
Ip6::MessageInfo messageInfo;
VerifyOrExit((message = Get<Coap::Coap>().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS);
VerifyOrExit((message = Get<Coap::Coap>().NewPriorityMessage()) != NULL, error = OT_ERROR_NO_BUFS);
message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST);
SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_NOTIFY));
+2 -2
View File
@@ -3919,7 +3919,7 @@ otError MleRouter::SendAddressSolicit(ThreadStatusTlv::Status aStatus)
VerifyOrExit(!mAddressSolicitPending, OT_NOOP);
VerifyOrExit((message = Get<Coap::Coap>().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS);
VerifyOrExit((message = Get<Coap::Coap>().NewPriorityMessage()) != NULL, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_ADDRESS_SOLICIT));
SuccessOrExit(error = message->SetPayloadMarker());
@@ -4204,7 +4204,7 @@ void MleRouter::SendAddressSolicitResponse(const Coap::Message & aRequest,
ThreadRouterMaskTlv routerMaskTlv;
Coap::Message * message;
VerifyOrExit((message = Get<Coap::Coap>().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS);
VerifyOrExit((message = Get<Coap::Coap>().NewPriorityMessage()) != NULL, error = OT_ERROR_NO_BUFS);
SuccessOrExit(error = message->SetDefaultResponseHeader(aRequest));
SuccessOrExit(error = message->SetPayloadMarker());