From 485ab9ed38c81689284314dba47eff16cfb94a43 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Tue, 11 Jun 2019 10:27:54 -0700 Subject: [PATCH] [coap] add checks for OT_ERROR_NO_BUFS (#3904) - Update Coap::Message::SetToken() to return error. - Update Coap::Message::SetDefaultResponseHeader() to return error. - Add error checking around calls to the above. --- include/openthread/coap.h | 5 ++- src/cli/cli_coap.cpp | 7 ++-- src/cli/cli_coap_secure.cpp | 10 +++--- src/core/api/coap_api.cpp | 4 +-- src/core/coap/coap.cpp | 2 +- src/core/coap/coap_message.cpp | 34 +++++++++++++------ src/core/coap/coap_message.hpp | 28 ++++++++++++++-- src/core/meshcop/announce_begin_client.cpp | 8 ++--- src/core/meshcop/border_agent.cpp | 36 ++++++++++----------- src/core/meshcop/commissioner.cpp | 32 +++++++----------- src/core/meshcop/dataset_manager.cpp | 22 +++++-------- src/core/meshcop/dataset_manager_ftd.cpp | 4 +-- src/core/meshcop/energy_scan_client.cpp | 8 ++--- src/core/meshcop/joiner.cpp | 6 ++-- src/core/meshcop/joiner_router.cpp | 10 +++--- src/core/meshcop/leader.cpp | 12 +++---- src/core/meshcop/panid_query_client.cpp | 8 ++--- src/core/thread/address_resolver.cpp | 12 +++---- src/core/thread/energy_scan_server.cpp | 6 ++-- src/core/thread/mle_router.cpp | 16 ++++----- src/core/thread/network_data.cpp | 6 ++-- src/core/thread/network_data_leader_ftd.cpp | 8 ++--- src/core/thread/network_diagnostic.cpp | 29 +++++++---------- src/core/thread/panid_query_server.cpp | 6 ++-- 24 files changed, 165 insertions(+), 154 deletions(-) diff --git a/include/openthread/coap.h b/include/openthread/coap.h index 1ed780a02..f0fd0ca26 100644 --- a/include/openthread/coap.h +++ b/include/openthread/coap.h @@ -350,8 +350,11 @@ void otCoapMessageInit(otMessage *aMessage, otCoapType aType, otCoapCode aCode); * @param[in] aToken A pointer to the Token value. * @param[in] aTokenLength The Length of @p aToken. * + * @retval OT_ERROR_NONE Successfully set the Token value. + * @retval OT_ERROR_NO_BUFS Insufficient buffers to set the Token value. + * */ -void otCoapMessageSetToken(otMessage *aMessage, const uint8_t *aToken, uint8_t aTokenLength); +otError otCoapMessageSetToken(otMessage *aMessage, const uint8_t *aToken, uint8_t aTokenLength); /** * This function sets the Token length and randomizes its value. diff --git a/src/cli/cli_coap.cpp b/src/cli/cli_coap.cpp index 62c1b24b6..99ec88dc1 100644 --- a/src/cli/cli_coap.cpp +++ b/src/cli/cli_coap.cpp @@ -217,7 +217,7 @@ otError Coap::ProcessRequest(int argc, char *argv[]) if (payloadLength > 0) { - otCoapMessageSetPayloadMarker(message); + SuccessOrExit(error = otCoapMessageSetPayloadMarker(message)); } } @@ -333,11 +333,12 @@ void Coap::HandleRequest(otMessage *aMessage, const otMessageInfo *aMessageInfo) otCoapMessageInit(responseMessage, OT_COAP_TYPE_ACKNOWLEDGMENT, responseCode); otCoapMessageSetMessageId(responseMessage, otCoapMessageGetMessageId(aMessage)); - otCoapMessageSetToken(responseMessage, otCoapMessageGetToken(aMessage), otCoapMessageGetTokenLength(aMessage)); + SuccessOrExit(error = otCoapMessageSetToken(responseMessage, otCoapMessageGetToken(aMessage), + otCoapMessageGetTokenLength(aMessage))); if (otCoapMessageGetCode(aMessage) == OT_COAP_CODE_GET) { - otCoapMessageSetPayloadMarker(responseMessage); + SuccessOrExit(error = otCoapMessageSetPayloadMarker(responseMessage)); SuccessOrExit(error = otMessageAppend(responseMessage, &responseContent, sizeof(responseContent))); } diff --git a/src/cli/cli_coap_secure.cpp b/src/cli/cli_coap_secure.cpp index d56f3c8df..be9591180 100644 --- a/src/cli/cli_coap_secure.cpp +++ b/src/cli/cli_coap_secure.cpp @@ -267,7 +267,7 @@ otError CoapSecure::ProcessRequest(int argc, char *argv[]) if (payloadLength > 0) { - otCoapMessageSetPayloadMarker(message); + SuccessOrExit(error = otCoapMessageSetPayloadMarker(message)); } } @@ -499,11 +499,12 @@ void CoapSecure::HandleRequest(otMessage *aMessage, const otMessageInfo *aMessag otCoapMessageInit(responseMessage, OT_COAP_TYPE_ACKNOWLEDGMENT, responseCode); otCoapMessageSetMessageId(responseMessage, otCoapMessageGetMessageId(aMessage)); - otCoapMessageSetToken(responseMessage, otCoapMessageGetToken(aMessage), otCoapMessageGetTokenLength(aMessage)); + SuccessOrExit(error = otCoapMessageSetToken(responseMessage, otCoapMessageGetToken(aMessage), + otCoapMessageGetTokenLength(aMessage))); if (otCoapMessageGetCode(aMessage) == OT_COAP_CODE_GET) { - otCoapMessageSetPayloadMarker(responseMessage); + SuccessOrExit(error = otCoapMessageSetPayloadMarker(responseMessage)); } if (otCoapMessageGetCode(aMessage) == OT_COAP_CODE_GET) @@ -573,7 +574,8 @@ void CoapSecure::DefaultHandler(otMessage *aMessage, const otMessageInfo *aMessa otCoapMessageInit(responseMessage, OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_NOT_FOUND); otCoapMessageSetMessageId(responseMessage, otCoapMessageGetMessageId(aMessage)); - otCoapMessageSetToken(responseMessage, otCoapMessageGetToken(aMessage), otCoapMessageGetTokenLength(aMessage)); + SuccessOrExit(error = otCoapMessageSetToken(responseMessage, otCoapMessageGetToken(aMessage), + otCoapMessageGetTokenLength(aMessage))); SuccessOrExit(error = otCoapSecureSendResponse(mInterpreter.mInstance, responseMessage, aMessageInfo)); } diff --git a/src/core/api/coap_api.cpp b/src/core/api/coap_api.cpp index 7b81fe977..ce8eaabae 100644 --- a/src/core/api/coap_api.cpp +++ b/src/core/api/coap_api.cpp @@ -64,9 +64,9 @@ void otCoapMessageInit(otMessage *aMessage, otCoapType aType, otCoapCode aCode) static_cast(aMessage)->Init(aType, aCode); } -void otCoapMessageSetToken(otMessage *aMessage, const uint8_t *aToken, uint8_t aTokenLength) +otError otCoapMessageSetToken(otMessage *aMessage, const uint8_t *aToken, uint8_t aTokenLength) { - static_cast(aMessage)->SetToken(aToken, aTokenLength); + return static_cast(aMessage)->SetToken(aToken, aTokenLength); } void otCoapMessageGenerateToken(otMessage *aMessage, uint8_t aTokenLength) diff --git a/src/core/coap/coap.cpp b/src/core/coap/coap.cpp index 024205c88..8408a6ebb 100644 --- a/src/core/coap/coap.cpp +++ b/src/core/coap/coap.cpp @@ -239,7 +239,7 @@ otError CoapBase::SendHeaderResponse(Message::Code aCode, const Message &aReques break; } - message->SetToken(aRequest.GetToken(), aRequest.GetTokenLength()); + SuccessOrExit(error = message->SetToken(aRequest.GetToken(), aRequest.GetTokenLength())); SuccessOrExit(error = SendMessage(*message, aMessageInfo)); diff --git a/src/core/coap/coap_message.cpp b/src/core/coap/coap_message.cpp index 9ce4b63b8..ed8d7cba2 100644 --- a/src/core/coap/coap_message.cpp +++ b/src/core/coap/coap_message.cpp @@ -49,6 +49,7 @@ void Message::Init(void) SetVersion(kVersion1); SetOffset(0); GetHelpData().mHeaderLength = kMinHeaderLength; + SetLength(GetHelpData().mHeaderLength); } @@ -59,6 +60,18 @@ void Message::Init(Type aType, Code aCode) SetCode(aCode); } +otError Message::Init(Type aType, Code aCode, const char *aUriPath) +{ + otError error; + + Init(aType, aCode); + SuccessOrExit(error = SetToken(kDefaultTokenLength)); + SuccessOrExit(error = AppendUriPathOptions(aUriPath)); + +exit: + return error; +} + void Message::Finish(void) { Write(0, GetOptionStart(), &GetHelpData().mHeader); @@ -117,8 +130,8 @@ otError Message::AppendOption(uint16_t aNumber, uint16_t aLength, const void *aV *cur++ = optionLength & 0xff; } - Append(buf, static_cast(cur - buf)); - Append(aValue, aLength); + SuccessOrExit(error = Append(buf, static_cast(cur - buf))); + SuccessOrExit(error = Append(aValue, aLength)); GetHelpData().mOptionLast = aNumber; @@ -308,7 +321,7 @@ otError Message::SetPayloadMarker(void) uint8_t marker = 0xff; VerifyOrExit(GetLength() < kMaxHeaderLength, error = OT_ERROR_NO_BUFS); - Append(&marker, sizeof(marker)); + SuccessOrExit(error = Append(&marker, sizeof(marker))); GetHelpData().mHeaderLength = GetLength(); exit: @@ -340,16 +353,17 @@ exit: return error; } -void Message::SetToken(const uint8_t *aToken, uint8_t aTokenLength) +otError Message::SetToken(const uint8_t *aToken, uint8_t aTokenLength) { GetHelpData().mHeader.mVersionTypeToken = (GetHelpData().mHeader.mVersionTypeToken & ~kTokenLengthMask) | ((aTokenLength << kTokenLengthOffset) & kTokenLengthMask); memcpy(GetHelpData().mHeader.mToken, aToken, aTokenLength); GetHelpData().mHeaderLength += aTokenLength; - SetLength(GetHelpData().mHeaderLength); + + return SetLength(GetHelpData().mHeaderLength); } -void Message::SetToken(uint8_t aTokenLength) +otError Message::SetToken(uint8_t aTokenLength) { uint8_t token[kMaxTokenLength] = {0}; @@ -357,14 +371,16 @@ void Message::SetToken(uint8_t aTokenLength) Random::NonCrypto::FillBuffer(token, aTokenLength); - SetToken(token, aTokenLength); + return SetToken(token, aTokenLength); } -void Message::SetDefaultResponseHeader(const Message &aRequest) +otError Message::SetDefaultResponseHeader(const Message &aRequest) { Init(OT_COAP_TYPE_ACKNOWLEDGMENT, OT_COAP_CODE_CHANGED); + SetMessageId(aRequest.GetMessageId()); - SetToken(aRequest.GetToken(), aRequest.GetTokenLength()); + + return SetToken(aRequest.GetToken(), aRequest.GetTokenLength()); } Message *Message::Clone(uint16_t aLength) const diff --git a/src/core/coap/coap_message.hpp b/src/core/coap/coap_message.hpp index f6f615bbe..118880772 100644 --- a/src/core/coap/coap_message.hpp +++ b/src/core/coap/coap_message.hpp @@ -110,6 +110,19 @@ public: */ void Init(Type aType, Code aCode); + /** + * This method initializes the CoAP header with specific Type and Code. + * + * @param[in] aType The Type value. + * @param[in] aCode The Code value. + * @param[in] aUriPath A pointer to a NULL-terminated string. + * + * @retval OT_ERROR_NONE Successfully appended the option. + * @retval OT_ERROR_NO_BUFS The option length exceeds the buffer size. + * + */ + otError Init(Type aType, Code aCode, const char *aUriPath); + /** * This method writes header to the message. This must be called before sending the message. * @@ -226,16 +239,22 @@ public: * @param[in] aToken A pointer to the Token value. * @param[in] aTokenLength The Length of @p aToken. * + * @retval OT_ERROR_NONE Successfully set the token value. + * @retval OT_ERROR_NO_BUFS Insufficient message buffers available to set the token value. + * */ - void SetToken(const uint8_t *aToken, uint8_t aTokenLength); + otError SetToken(const uint8_t *aToken, uint8_t aTokenLength); /** * This method sets the Token length and randomizes its value. * * @param[in] aTokenLength The Length of a Token to set. * + * @retval OT_ERROR_NONE Successfully set the token value. + * @retval OT_ERROR_NO_BUFS Insufficient message buffers available to set the token value. + * */ - void SetToken(uint8_t aTokenLength); + otError SetToken(uint8_t aTokenLength); /** * This method checks if Tokens in two CoAP headers are equal. @@ -414,8 +433,11 @@ public: * * @param[in] aRequest The request message. * + * @retval OT_ERROR_NONE Successfully set the default response header. + * @retval OT_ERROR_NO_BUFS Insufficient message buffers available to set the default response header. + * */ - void SetDefaultResponseHeader(const Message &aRequest); + otError SetDefaultResponseHeader(const Message &aRequest); /** * This method checks if a header is an empty message header. diff --git a/src/core/meshcop/announce_begin_client.cpp b/src/core/meshcop/announce_begin_client.cpp index 4c73ca1b6..a2a0e54c5 100644 --- a/src/core/meshcop/announce_begin_client.cpp +++ b/src/core/meshcop/announce_begin_client.cpp @@ -70,10 +70,10 @@ otError AnnounceBeginClient::SendRequest(uint32_t aChannelMask, VerifyOrExit(Get().IsActive(), error = OT_ERROR_INVALID_STATE); VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(aAddress.IsMulticast() ? OT_COAP_TYPE_NON_CONFIRMABLE : OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_ANNOUNCE_BEGIN); - message->SetPayloadMarker(); + SuccessOrExit(error = + message->Init(aAddress.IsMulticast() ? OT_COAP_TYPE_NON_CONFIRMABLE : OT_COAP_TYPE_CONFIRMABLE, + OT_COAP_CODE_POST, OT_URI_PATH_ANNOUNCE_BEGIN)); + SuccessOrExit(error = message->SetPayloadMarker()); sessionId.Init(); sessionId.SetCommissionerSessionId(Get().GetSessionId()); diff --git a/src/core/meshcop/border_agent.cpp b/src/core/meshcop/border_agent.cpp index 35713cfdf..77281d506 100644 --- a/src/core/meshcop/border_agent.cpp +++ b/src/core/meshcop/border_agent.cpp @@ -103,8 +103,11 @@ public: * @param[out] aHeader A refernce to the response header. * @param[in] aCode The response code to fill in the response header. * + * @retval OT_ERROR_NONE Successfully generated the response header. + * @retval OT_ERROR_NO_BUFS Insufficient message buffers available to generate the response header. + * */ - void ToHeader(Coap::Message &aMessage, Coap::Message::Code aCode) + otError ToHeader(Coap::Message &aMessage, Coap::Message::Code aCode) { if (mType == (OT_COAP_TYPE_NON_CONFIRMABLE >> Coap::Message::kTypeOffset) || mSeparate) { @@ -116,7 +119,8 @@ public: } aMessage.SetMessageId(mSeparate ? 0 : mMessageId); - aMessage.SetToken(mToken, mTokenLength); + + return aMessage.SetToken(mToken, mTokenLength); } private: @@ -161,7 +165,7 @@ static void SendErrorMessage(Coap::CoapSecure &aCoapSecure, ForwardContext &aFor Coap::Message *message = NULL; VerifyOrExit((message = NewMeshCoPMessage(aCoapSecure)) != NULL, error = OT_ERROR_NO_BUFS); - aForwardContext.ToHeader(*message, CoapCodeFromError(error)); + SuccessOrExit(error = aForwardContext.ToHeader(*message, CoapCodeFromError(error))); SuccessOrExit(error = aCoapSecure.SendMessage(*message, aCoapSecure.GetPeerAddress())); exit: @@ -193,7 +197,7 @@ static void SendErrorMessage(Coap::CoapSecure &aCoapSecure, const Coap::Message } message->SetMessageId(aSeparate ? 0 : aRequest.GetMessageId()); - message->SetToken(aRequest.GetToken(), aRequest.GetTokenLength()); + SuccessOrExit(error = message->SetToken(aRequest.GetToken(), aRequest.GetTokenLength())); SuccessOrExit(error = aCoapSecure.SendMessage(*message, aCoapSecure.GetPeerAddress())); @@ -248,11 +252,11 @@ void BorderAgent::HandleCoapResponse(void * aContext, } } - forwardContext.ToHeader(*message, response->GetCode()); + SuccessOrExit(error = forwardContext.ToHeader(*message, response->GetCode())); if (response->GetLength() - response->GetOffset() > 0) { - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetPayloadMarker()); } SuccessOrExit(error = borderAgent.ForwardToCommissioner(*message, *response)); @@ -405,8 +409,8 @@ bool BorderAgent::HandleUdpReceive(const Message &aMessage, const Ip6::MessageIn VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST); - message->AppendUriPathOptions(OT_URI_PATH_PROXY_RX); - message->SetPayloadMarker(); + SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_PROXY_RX)); + SuccessOrExit(error = message->SetPayloadMarker()); { UdpEncapsulationTlv tlv; @@ -456,11 +460,11 @@ void BorderAgent::HandleRelayReceive(const Coap::Message &aMessage) VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST); - message->AppendUriPathOptions(OT_URI_PATH_RELAY_RX); + SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_RELAY_RX)); if (aMessage.GetLength() > aMessage.GetOffset()) { - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetPayloadMarker()); } SuccessOrExit(error = ForwardToCommissioner(*message, aMessage)); @@ -523,10 +527,8 @@ void BorderAgent::HandleRelayTransmit(const Coap::Message &aMessage) VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_RELAY_TX); - message->SetPayloadMarker(); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_RELAY_TX)); + SuccessOrExit(error = message->SetPayloadMarker()); offset = message->GetLength(); SuccessOrExit(error = message->SetLength(offset + aMessage.GetLength() - aMessage.GetOffset())); @@ -578,14 +580,12 @@ otError BorderAgent::ForwardToLeader(const Coap::Message & aMessage, forwardContext = new (forwardContext) ForwardContext(*this, aMessage, aPetition, aSeparate); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(aPath); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, aPath)); // Payload of c/cg may be empty if (aMessage.GetLength() - aMessage.GetOffset() > 0) { - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetPayloadMarker()); } offset = message->GetLength(); diff --git a/src/core/meshcop/commissioner.cpp b/src/core/meshcop/commissioner.cpp index 17d4d7d8c..180ad4751 100644 --- a/src/core/meshcop/commissioner.cpp +++ b/src/core/meshcop/commissioner.cpp @@ -491,13 +491,11 @@ otError Commissioner::SendMgmtCommissionerGetRequest(const uint8_t *aTlvs, uint8 VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_COMMISSIONER_GET); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_COMMISSIONER_GET)); if (aLength > 0) { - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetPayloadMarker()); } if (aLength > 0) @@ -558,10 +556,8 @@ otError Commissioner::SendMgmtCommissionerSetRequest(const otCommissioningDatase VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_COMMISSIONER_SET); - message->SetPayloadMarker(); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_COMMISSIONER_SET)); + SuccessOrExit(error = message->SetPayloadMarker()); if (aDataset.mIsLocatorSet) { @@ -658,10 +654,8 @@ otError Commissioner::SendPetition(void) VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_LEADER_PETITION); - message->SetPayloadMarker(); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_LEADER_PETITION)); + SuccessOrExit(error = message->SetPayloadMarker()); commissionerId.Init(); commissionerId.SetCommissionerId("OpenThread Commissioner"); @@ -753,10 +747,8 @@ otError Commissioner::SendKeepAlive(void) VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_LEADER_KEEP_ALIVE); - message->SetPayloadMarker(); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_LEADER_KEEP_ALIVE)); + SuccessOrExit(error = message->SetPayloadMarker()); state.Init(); state.SetState(mState == OT_COMMISSIONER_STATE_ACTIVE ? StateTlv::kAccept : StateTlv::kReject); @@ -986,8 +978,8 @@ void Commissioner::SendJoinFinalizeResponse(const Coap::Message &aRequest, State VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->SetDefaultResponseHeader(aRequest); - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetDefaultResponseHeader(aRequest)); + SuccessOrExit(error = message->SetPayloadMarker()); message->SetOffset(message->GetLength()); message->SetSubType(Message::kSubTypeJoinerFinalizeResponse); @@ -1050,8 +1042,8 @@ otError Commissioner::SendRelayTransmit(Message &aMessage, const Ip6::MessageInf VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST); - message->AppendUriPathOptions(OT_URI_PATH_RELAY_TX); - message->SetPayloadMarker(); + SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_RELAY_TX)); + SuccessOrExit(error = message->SetPayloadMarker()); udpPort.Init(); udpPort.SetUdpPort(mJoinerPort); diff --git a/src/core/meshcop/dataset_manager.cpp b/src/core/meshcop/dataset_manager.cpp index 6a93ce548..d3eb659e5 100644 --- a/src/core/meshcop/dataset_manager.cpp +++ b/src/core/meshcop/dataset_manager.cpp @@ -272,10 +272,8 @@ otError DatasetManager::Register(void) VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(mUriSet); - message->SetPayloadMarker(); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, mUriSet)); + SuccessOrExit(error = message->SetPayloadMarker()); mLocal.Read(dataset); SuccessOrExit(error = message->Append(dataset.GetBytes(), dataset.GetSize())); @@ -353,8 +351,8 @@ void DatasetManager::SendGetResponse(const Coap::Message & aRequest, VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->SetDefaultResponseHeader(aRequest); - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetDefaultResponseHeader(aRequest)); + SuccessOrExit(error = message->SetPayloadMarker()); if (aLength == 0) { @@ -417,10 +415,8 @@ otError DatasetManager::SendSetRequest(const otOperationalDataset &aDataset, con VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(mUriSet); - message->SetPayloadMarker(); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, mUriSet)); + SuccessOrExit(error = message->SetPayloadMarker()); #if OPENTHREAD_ENABLE_COMMISSIONER && OPENTHREAD_FTD @@ -638,13 +634,11 @@ otError DatasetManager::SendGetRequest(const otOperationalDatasetComponents &aDa VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(mUriGet); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, mUriGet)); if (aLength + length > 0) { - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetPayloadMarker()); } if (aLength + length > 0) diff --git a/src/core/meshcop/dataset_manager_ftd.cpp b/src/core/meshcop/dataset_manager_ftd.cpp index 2bca6ac3f..9db0f6a0a 100644 --- a/src/core/meshcop/dataset_manager_ftd.cpp +++ b/src/core/meshcop/dataset_manager_ftd.cpp @@ -296,8 +296,8 @@ void DatasetManager::SendSetResponse(const Coap::Message & aRequest, VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->SetDefaultResponseHeader(aRequest); - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetDefaultResponseHeader(aRequest)); + SuccessOrExit(error = message->SetPayloadMarker()); state.Init(); state.SetState(aState); diff --git a/src/core/meshcop/energy_scan_client.cpp b/src/core/meshcop/energy_scan_client.cpp index 58e1b8dcc..067b1a02b 100644 --- a/src/core/meshcop/energy_scan_client.cpp +++ b/src/core/meshcop/energy_scan_client.cpp @@ -78,10 +78,10 @@ otError EnergyScanClient::SendQuery(uint32_t aChannelM VerifyOrExit(Get().IsActive(), error = OT_ERROR_INVALID_STATE); VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(aAddress.IsMulticast() ? OT_COAP_TYPE_NON_CONFIRMABLE : OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_ENERGY_SCAN); - message->SetPayloadMarker(); + SuccessOrExit(error = + message->Init(aAddress.IsMulticast() ? OT_COAP_TYPE_NON_CONFIRMABLE : OT_COAP_TYPE_CONFIRMABLE, + OT_COAP_CODE_POST, OT_URI_PATH_ENERGY_SCAN)); + SuccessOrExit(error = message->SetPayloadMarker()); sessionId.Init(); sessionId.SetCommissionerSessionId(Get().GetSessionId()); diff --git a/src/core/meshcop/joiner.cpp b/src/core/meshcop/joiner.cpp index 1fa893a7b..708c538cf 100644 --- a/src/core/meshcop/joiner.cpp +++ b/src/core/meshcop/joiner.cpp @@ -399,8 +399,8 @@ otError Joiner::PrepareJoinerFinalizeMessage(const char *aProvisioningUrl, VerifyOrExit((mFinalizeMessage = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); mFinalizeMessage->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - mFinalizeMessage->AppendUriPathOptions(OT_URI_PATH_JOINER_FINALIZE); - mFinalizeMessage->SetPayloadMarker(); + SuccessOrExit(error = mFinalizeMessage->AppendUriPathOptions(OT_URI_PATH_JOINER_FINALIZE)); + SuccessOrExit(error = mFinalizeMessage->SetPayloadMarker()); mFinalizeMessage->SetOffset(mFinalizeMessage->GetLength()); stateTlv.Init(); @@ -584,7 +584,7 @@ void Joiner::SendJoinerEntrustResponse(const Coap::Message &aRequest, const Ip6: Ip6::MessageInfo responseInfo(aRequestInfo); VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->SetDefaultResponseHeader(aRequest); + SuccessOrExit(error = message->SetDefaultResponseHeader(aRequest)); message->SetSubType(Message::kSubTypeJoinerEntrust); memset(&responseInfo.mSockAddr, 0, sizeof(responseInfo.mSockAddr)); diff --git a/src/core/meshcop/joiner_router.cpp b/src/core/meshcop/joiner_router.cpp index ded5f9e08..43be7e1c0 100644 --- a/src/core/meshcop/joiner_router.cpp +++ b/src/core/meshcop/joiner_router.cpp @@ -146,10 +146,8 @@ void JoinerRouter::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &a VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_RELAY_RX); - message->SetPayloadMarker(); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_RELAY_RX)); + SuccessOrExit(error = message->SetPayloadMarker()); udpPort.Init(); udpPort.SetUdpPort(aMessageInfo.GetPeerPort()); @@ -281,8 +279,8 @@ otError JoinerRouter::DelaySendingJoinerEntrust(const Ip6::MessageInfo &aMessage VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->AppendUriPathOptions(OT_URI_PATH_JOINER_ENTRUST); - message->SetPayloadMarker(); + SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_JOINER_ENTRUST)); + SuccessOrExit(error = message->SetPayloadMarker()); message->SetSubType(Message::kSubTypeJoinerEntrust); masterKey.Init(); diff --git a/src/core/meshcop/leader.cpp b/src/core/meshcop/leader.cpp index c6bb649d9..293515737 100644 --- a/src/core/meshcop/leader.cpp +++ b/src/core/meshcop/leader.cpp @@ -126,8 +126,8 @@ otError Leader::SendPetitionResponse(const Coap::Message & aRequest, VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->SetDefaultResponseHeader(aRequest); - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetDefaultResponseHeader(aRequest)); + SuccessOrExit(error = message->SetPayloadMarker()); state.Init(); state.SetState(aState); @@ -222,8 +222,8 @@ otError Leader::SendKeepAliveResponse(const Coap::Message & aRequest, VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->SetDefaultResponseHeader(aRequest); - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetDefaultResponseHeader(aRequest)); + SuccessOrExit(error = message->SetPayloadMarker()); state.Init(); state.SetState(aState); @@ -251,9 +251,7 @@ otError Leader::SendDatasetChanged(const Ip6::Address &aAddress) VerifyOrExit((message = NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_DATASET_CHANGED); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_DATASET_CHANGED)); messageInfo.SetSockAddr(Get().GetMeshLocal16()); messageInfo.SetPeerAddr(aAddress); diff --git a/src/core/meshcop/panid_query_client.cpp b/src/core/meshcop/panid_query_client.cpp index 849b9a8f3..7d5b96313 100644 --- a/src/core/meshcop/panid_query_client.cpp +++ b/src/core/meshcop/panid_query_client.cpp @@ -73,10 +73,10 @@ otError PanIdQueryClient::SendQuery(uint16_t aPanId, VerifyOrExit(Get().IsActive(), error = OT_ERROR_INVALID_STATE); VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(aAddress.IsMulticast() ? OT_COAP_TYPE_NON_CONFIRMABLE : OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_PANID_QUERY); - message->SetPayloadMarker(); + SuccessOrExit(error = + message->Init(aAddress.IsMulticast() ? OT_COAP_TYPE_NON_CONFIRMABLE : OT_COAP_TYPE_CONFIRMABLE, + OT_COAP_CODE_POST, OT_URI_PATH_PANID_QUERY)); + SuccessOrExit(error = message->SetPayloadMarker()); sessionId.Init(); sessionId.SetCommissionerSessionId(Get().GetSessionId()); diff --git a/src/core/thread/address_resolver.cpp b/src/core/thread/address_resolver.cpp index 0178badae..f0781b3b1 100644 --- a/src/core/thread/address_resolver.cpp +++ b/src/core/thread/address_resolver.cpp @@ -322,8 +322,8 @@ otError AddressResolver::SendAddressQuery(const Ip6::Address &aEid) VerifyOrExit((message = Get().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST); - message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_QUERY); - message->SetPayloadMarker(); + SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_QUERY)); + SuccessOrExit(error = message->SetPayloadMarker()); targetTlv.Init(); targetTlv.SetTarget(aEid); @@ -459,8 +459,8 @@ otError AddressResolver::SendAddressError(const ThreadTargetTlv & aTarget, VerifyOrExit((message = Get().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); message->Init(aDestination == NULL ? OT_COAP_TYPE_NON_CONFIRMABLE : OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_ERROR); - message->SetPayloadMarker(); + SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_ERROR)); + SuccessOrExit(error = message->SetPayloadMarker()); SuccessOrExit(error = message->AppendTlv(aTarget)); SuccessOrExit(error = message->AppendTlv(aEid)); @@ -641,8 +641,8 @@ void AddressResolver::SendAddressQueryResponse(const ThreadTargetTlv & VerifyOrExit((message = Get().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_NOTIFY); - message->SetPayloadMarker(); + SuccessOrExit(error = message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_NOTIFY)); + SuccessOrExit(error = message->SetPayloadMarker()); SuccessOrExit(error = message->AppendTlv(aTargetTlv)); SuccessOrExit(error = message->AppendTlv(aMlEidTlv)); diff --git a/src/core/thread/energy_scan_server.cpp b/src/core/thread/energy_scan_server.cpp index 1d2c575f7..60bfa98b3 100644 --- a/src/core/thread/energy_scan_server.cpp +++ b/src/core/thread/energy_scan_server.cpp @@ -182,10 +182,8 @@ otError EnergyScanServer::SendReport(void) VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_ENERGY_REPORT); - message->SetPayloadMarker(); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_ENERGY_REPORT)); + SuccessOrExit(error = message->SetPayloadMarker()); channelMask.Init(); channelMask.SetChannelMask(mChannelMask); diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index 0255d729e..126e4d640 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -3802,10 +3802,8 @@ otError MleRouter::SendAddressSolicit(ThreadStatusTlv::Status aStatus) VerifyOrExit((message = Get().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_SOLICIT); - message->SetPayloadMarker(); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_ADDRESS_SOLICIT)); + SuccessOrExit(error = message->SetPayloadMarker()); macAddr64Tlv.Init(); macAddr64Tlv.SetMacAddr(Get().GetExtAddress()); @@ -3856,10 +3854,8 @@ otError MleRouter::SendAddressRelease(void) VerifyOrExit((message = Get().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_ADDRESS_RELEASE); - message->SetPayloadMarker(); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_ADDRESS_RELEASE)); + SuccessOrExit(error = message->SetPayloadMarker()); rlocTlv.Init(); rlocTlv.SetRloc16(GetRloc16(mRouterId)); @@ -4103,8 +4099,8 @@ void MleRouter::SendAddressSolicitResponse(const Coap::Message & aRequest, VerifyOrExit((message = Get().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); - message->SetDefaultResponseHeader(aRequest); - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetDefaultResponseHeader(aRequest)); + SuccessOrExit(error = message->SetPayloadMarker()); statusTlv.Init(); statusTlv.SetStatus(aRouter == NULL ? statusTlv.kNoAddressAvailable : statusTlv.kSuccess); diff --git a/src/core/thread/network_data.cpp b/src/core/thread/network_data.cpp index 14f879545..53f625552 100644 --- a/src/core/thread/network_data.cpp +++ b/src/core/thread/network_data.cpp @@ -1000,10 +1000,8 @@ otError NetworkData::SendServerDataNotification(uint16_t aRloc16) VerifyOrExit((message = Get().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_SERVER_DATA); - message->SetPayloadMarker(); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_SERVER_DATA)); + SuccessOrExit(error = message->SetPayloadMarker()); if (mType == kTypeLocal) { diff --git a/src/core/thread/network_data_leader_ftd.cpp b/src/core/thread/network_data_leader_ftd.cpp index 690c2cd95..8dcba4366 100644 --- a/src/core/thread/network_data_leader_ftd.cpp +++ b/src/core/thread/network_data_leader_ftd.cpp @@ -321,8 +321,8 @@ void Leader::SendCommissioningGetResponse(const Coap::Message & aRequest, VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->SetDefaultResponseHeader(aRequest); - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetDefaultResponseHeader(aRequest)); + SuccessOrExit(error = message->SetPayloadMarker()); for (NetworkDataTlv *cur = reinterpret_cast(mTlvs); cur < reinterpret_cast(mTlvs + mLength); cur = cur->GetNext()) @@ -385,8 +385,8 @@ void Leader::SendCommissioningSetResponse(const Coap::Message & aRequest, VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->SetDefaultResponseHeader(aRequest); - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetDefaultResponseHeader(aRequest)); + SuccessOrExit(error = message->SetPayloadMarker()); state.Init(); state.SetState(aState); diff --git a/src/core/thread/network_diagnostic.cpp b/src/core/thread/network_diagnostic.cpp index d2c44f7f2..eae830086 100644 --- a/src/core/thread/network_diagnostic.cpp +++ b/src/core/thread/network_diagnostic.cpp @@ -90,21 +90,19 @@ otError NetworkDiagnostic::SendDiagnosticGet(const Ip6::Address &aDestination, if (aDestination.IsMulticast()) { - message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_DIAGNOSTIC_GET_QUERY); + SuccessOrExit( + error = message->Init(OT_COAP_TYPE_NON_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_DIAGNOSTIC_GET_QUERY)); } else { handler = &NetworkDiagnostic::HandleDiagnosticGetResponse; - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_DIAGNOSTIC_GET_REQUEST); + SuccessOrExit( + error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_DIAGNOSTIC_GET_REQUEST)); } if (aCount > 0) { - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetPayloadMarker()); } if (aCount > 0) @@ -496,13 +494,12 @@ void NetworkDiagnostic::HandleDiagnosticGetQuery(Coap::Message &aMessage, const VerifyOrExit((message = Get().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_DIAGNOSTIC_GET_ANSWER); + SuccessOrExit(error = + message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_DIAGNOSTIC_GET_ANSWER)); if (networkDiagnosticTlv.GetLength() > 0) { - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetPayloadMarker()); } messageInfo.SetSockAddr(Get().GetMeshLocal16()); @@ -560,8 +557,8 @@ void NetworkDiagnostic::HandleDiagnosticGetRequest(Coap::Message &aMessage, cons VerifyOrExit((message = Get().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); - message->SetDefaultResponseHeader(aMessage); - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetDefaultResponseHeader(aMessage)); + SuccessOrExit(error = message->SetPayloadMarker()); SuccessOrExit(error = FillRequestedTlvs(aMessage, *message, networkDiagnosticTlv)); @@ -593,13 +590,11 @@ otError NetworkDiagnostic::SendDiagnosticReset(const Ip6::Address &aDestination, VerifyOrExit((message = Get().NewMessage()) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_DIAGNOSTIC_RESET); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_DIAGNOSTIC_RESET)); if (aCount > 0) { - message->SetPayloadMarker(); + SuccessOrExit(error = message->SetPayloadMarker()); } if (aCount > 0) diff --git a/src/core/thread/panid_query_server.cpp b/src/core/thread/panid_query_server.cpp index a388425b5..3d3e56fd9 100644 --- a/src/core/thread/panid_query_server.cpp +++ b/src/core/thread/panid_query_server.cpp @@ -123,10 +123,8 @@ otError PanIdQueryServer::SendConflict(void) VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get())) != NULL, error = OT_ERROR_NO_BUFS); - message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST); - message->SetToken(Coap::Message::kDefaultTokenLength); - message->AppendUriPathOptions(OT_URI_PATH_PANID_CONFLICT); - message->SetPayloadMarker(); + SuccessOrExit(error = message->Init(OT_COAP_TYPE_CONFIRMABLE, OT_COAP_CODE_POST, OT_URI_PATH_PANID_CONFLICT)); + SuccessOrExit(error = message->SetPayloadMarker()); channelMask.Init(); channelMask.SetChannelMask(mChannelMask);