diff --git a/src/core/coap/coap_secure.cpp b/src/core/coap/coap_secure.cpp index 0bd90b9e9..25f5117a8 100644 --- a/src/core/coap/coap_secure.cpp +++ b/src/core/coap/coap_secure.cpp @@ -252,21 +252,22 @@ otError CoapSecure::HandleDtlsSend(const uint8_t *aBuf, uint16_t aLength, uint8_ mTransmitMessage->SetLinkSecurityEnabled(false); } + SuccessOrExit(error = mTransmitMessage->Append(aBuf, aLength)); + // Set message sub type in case Joiner Finalize Response is appended to the message. if (aMessageSubType != Message::kSubTypeNone) { mTransmitMessage->SetSubType(aMessageSubType); } - VerifyOrExit(mTransmitMessage->Append(aBuf, aLength) == OT_ERROR_NONE, error = OT_ERROR_NO_BUFS); - mTransmitTask.Post(); exit: - if (error != OT_ERROR_NONE && mTransmitMessage != NULL) + if (error != OT_ERROR_NONE && mTransmitMessage != NULL && mTransmitMessage->GetLength() == 0) { mTransmitMessage->Free(); + mTransmitMessage = NULL; } otLogFuncExitErr(error); diff --git a/src/core/meshcop/commissioner.cpp b/src/core/meshcop/commissioner.cpp index 06c6ba4c4..0ff73d4e2 100644 --- a/src/core/meshcop/commissioner.cpp +++ b/src/core/meshcop/commissioner.cpp @@ -1025,7 +1025,7 @@ otError Commissioner::SendRelayTransmit(Message &aMessage, const Ip6::MessageInf tlv.SetLength(aMessage.GetLength()); SuccessOrExit(error = message->Append(&tlv, sizeof(tlv))); offset = message->GetLength(); - message->SetLength(offset + aMessage.GetLength()); + SuccessOrExit(error = message->SetLength(offset + aMessage.GetLength())); aMessage.CopyTo(0, offset, aMessage.GetLength(), *message); messageInfo.SetPeerAddr(netif.GetMle().GetMeshLocal16());