mirror of
https://github.com/espressif/openthread.git
synced 2026-09-08 18:20:06 +00:00
[coap] ensure CoAP control messages are prioritized (#4962)
This commit is contained in:
committed by
Jonathan Hui
parent
7edb455330
commit
495f76571f
@@ -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.
|
||||
*
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user