[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.
This commit is contained in:
Jonathan Hui
2019-06-11 10:27:54 -07:00
committed by GitHub
parent 65f1ac44db
commit 485ab9ed38
24 changed files with 165 additions and 154 deletions
+4 -1
View File
@@ -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.
+4 -3
View File
@@ -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)));
}
+6 -4
View File
@@ -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));
}
+2 -2
View File
@@ -64,9 +64,9 @@ void otCoapMessageInit(otMessage *aMessage, otCoapType aType, otCoapCode aCode)
static_cast<Coap::Message *>(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<Coap::Message *>(aMessage)->SetToken(aToken, aTokenLength);
return static_cast<Coap::Message *>(aMessage)->SetToken(aToken, aTokenLength);
}
void otCoapMessageGenerateToken(otMessage *aMessage, uint8_t aTokenLength)
+1 -1
View File
@@ -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));
+25 -9
View File
@@ -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<uint16_t>(cur - buf));
Append(aValue, aLength);
SuccessOrExit(error = Append(buf, static_cast<uint16_t>(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
+25 -3
View File
@@ -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.
+4 -4
View File
@@ -70,10 +70,10 @@ otError AnnounceBeginClient::SendRequest(uint32_t aChannelMask,
VerifyOrExit(Get<MeshCoP::Commissioner>().IsActive(), error = OT_ERROR_INVALID_STATE);
VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get<Coap::Coap>())) != 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<MeshCoP::Commissioner>().GetSessionId());
+18 -18
View File
@@ -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<Coap::CoapSecure>())) != 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<Coap::CoapSecure>())) != 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<Coap::Coap>())) != 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();
+12 -20
View File
@@ -491,13 +491,11 @@ otError Commissioner::SendMgmtCommissionerGetRequest(const uint8_t *aTlvs, uint8
VerifyOrExit((message = NewMeshCoPMessage(Get<Coap::Coap>())) != 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<Coap::Coap>())) != 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<Coap::Coap>())) != 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<Coap::Coap>())) != 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<Coap::CoapSecure>())) != 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<Coap::Coap>())) != 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);
+8 -14
View File
@@ -272,10 +272,8 @@ otError DatasetManager::Register(void)
VerifyOrExit((message = NewMeshCoPMessage(Get<Coap::Coap>())) != 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<Coap::Coap>())) != 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<Coap::Coap>())) != 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<Coap::Coap>())) != 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)
+2 -2
View File
@@ -296,8 +296,8 @@ void DatasetManager::SendSetResponse(const Coap::Message & aRequest,
VerifyOrExit((message = NewMeshCoPMessage(Get<Coap::Coap>())) != 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);
+4 -4
View File
@@ -78,10 +78,10 @@ otError EnergyScanClient::SendQuery(uint32_t aChannelM
VerifyOrExit(Get<MeshCoP::Commissioner>().IsActive(), error = OT_ERROR_INVALID_STATE);
VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get<Coap::Coap>())) != 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<MeshCoP::Commissioner>().GetSessionId());
+3 -3
View File
@@ -399,8 +399,8 @@ otError Joiner::PrepareJoinerFinalizeMessage(const char *aProvisioningUrl,
VerifyOrExit((mFinalizeMessage = NewMeshCoPMessage(Get<Coap::CoapSecure>())) != 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<Coap::Coap>())) != 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));
+4 -6
View File
@@ -146,10 +146,8 @@ void JoinerRouter::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &a
VerifyOrExit((message = NewMeshCoPMessage(Get<Coap::Coap>())) != 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<Coap::Coap>())) != 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();
+5 -7
View File
@@ -126,8 +126,8 @@ otError Leader::SendPetitionResponse(const Coap::Message & aRequest,
VerifyOrExit((message = NewMeshCoPMessage(Get<Coap::Coap>())) != 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<Coap::Coap>())) != 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<Coap::Coap>())) != 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<Mle::MleRouter>().GetMeshLocal16());
messageInfo.SetPeerAddr(aAddress);
+4 -4
View File
@@ -73,10 +73,10 @@ otError PanIdQueryClient::SendQuery(uint16_t aPanId,
VerifyOrExit(Get<MeshCoP::Commissioner>().IsActive(), error = OT_ERROR_INVALID_STATE);
VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get<Coap::Coap>())) != 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<MeshCoP::Commissioner>().GetSessionId());
+6 -6
View File
@@ -322,8 +322,8 @@ otError AddressResolver::SendAddressQuery(const Ip6::Address &aEid)
VerifyOrExit((message = Get<Coap::Coap>().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<Coap::Coap>().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<Coap::Coap>().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));
+2 -4
View File
@@ -182,10 +182,8 @@ otError EnergyScanServer::SendReport(void)
VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get<Coap::Coap>())) != 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);
+6 -10
View File
@@ -3802,10 +3802,8 @@ otError MleRouter::SendAddressSolicit(ThreadStatusTlv::Status aStatus)
VerifyOrExit((message = Get<Coap::Coap>().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<Mac::Mac>().GetExtAddress());
@@ -3856,10 +3854,8 @@ otError MleRouter::SendAddressRelease(void)
VerifyOrExit((message = Get<Coap::Coap>().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<Coap::Coap>().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);
+2 -4
View File
@@ -1000,10 +1000,8 @@ otError NetworkData::SendServerDataNotification(uint16_t aRloc16)
VerifyOrExit((message = Get<Coap::Coap>().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)
{
+4 -4
View File
@@ -321,8 +321,8 @@ void Leader::SendCommissioningGetResponse(const Coap::Message & aRequest,
VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get<Coap::Coap>())) != 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<NetworkDataTlv *>(mTlvs);
cur < reinterpret_cast<NetworkDataTlv *>(mTlvs + mLength); cur = cur->GetNext())
@@ -385,8 +385,8 @@ void Leader::SendCommissioningSetResponse(const Coap::Message & aRequest,
VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get<Coap::Coap>())) != 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);
+12 -17
View File
@@ -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<Coap::Coap>().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<Mle::MleRouter>().GetMeshLocal16());
@@ -560,8 +557,8 @@ void NetworkDiagnostic::HandleDiagnosticGetRequest(Coap::Message &aMessage, cons
VerifyOrExit((message = Get<Coap::Coap>().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<Coap::Coap>().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)
+2 -4
View File
@@ -123,10 +123,8 @@ otError PanIdQueryServer::SendConflict(void)
VerifyOrExit((message = MeshCoP::NewMeshCoPMessage(Get<Coap::Coap>())) != 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);