diff --git a/src/core/coap/coap.hpp b/src/core/coap/coap.hpp index f314f797e..a230aa271 100644 --- a/src/core/coap/coap.hpp +++ b/src/core/coap/coap.hpp @@ -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(Message::kPriorityNet)}; + return NewMessage(&settings); + } + /** * This method sends a CoAP message with custom transmission parameters. * diff --git a/src/core/thread/address_resolver.cpp b/src/core/thread/address_resolver.cpp index a3a8e4e0f..c9fb7e980 100644 --- a/src/core/thread/address_resolver.cpp +++ b/src/core/thread/address_resolver.cpp @@ -553,7 +553,7 @@ otError AddressResolver::SendAddressQuery(const Ip6::Address &aEid) Coap::Message * message; Ip6::MessageInfo messageInfo; - VerifyOrExit((message = Get().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); + VerifyOrExit((message = Get().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().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); + VerifyOrExit((message = Get().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)); diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index c8ce72cba..a8783759e 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -3919,7 +3919,7 @@ otError MleRouter::SendAddressSolicit(ThreadStatusTlv::Status aStatus) VerifyOrExit(!mAddressSolicitPending, OT_NOOP); - VerifyOrExit((message = Get().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); + VerifyOrExit((message = Get().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().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); + VerifyOrExit((message = Get().NewPriorityMessage()) != NULL, error = OT_ERROR_NO_BUFS); SuccessOrExit(error = message->SetDefaultResponseHeader(aRequest)); SuccessOrExit(error = message->SetPayloadMarker());