diff --git a/src/core/meshcop/border_agent.cpp b/src/core/meshcop/border_agent.cpp index 94dab7aaf..1eec2a5ca 100644 --- a/src/core/meshcop/border_agent.cpp +++ b/src/core/meshcop/border_agent.cpp @@ -331,28 +331,6 @@ Manager::CoapDtlsSession *Manager::FindActiveCommissionerSession(void) return commissionerSession; } -Coap::Message::Code Manager::CoapCodeFromError(Error aError) -{ - Coap::Message::Code code; - - switch (aError) - { - case kErrorNone: - code = Coap::kCodeChanged; - break; - - case kErrorParse: - code = Coap::kCodeBadRequest; - break; - - default: - code = Coap::kCodeInternalError; - break; - } - - return code; -} - template <> void Manager::HandleTmf(Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo) { // This is from TMF agent. @@ -1115,7 +1093,7 @@ exit: if (error != kErrorNone) { - SendErrorMessage(aMessage, error); + SendErrorMessage(error, aMessage.GetToken(), aMessage.GetTokenLength()); } return error; @@ -1188,7 +1166,7 @@ exit: { LogWarn("Commissioner request failed: %s", ErrorToString(error)); - SendErrorMessage(aForwardContext, error); + SendErrorMessage(error, aForwardContext.mToken, aForwardContext.mTokenLength); } } @@ -1258,31 +1236,20 @@ exit: return error; } -void Manager::CoapDtlsSession::SendErrorMessage(const ForwardContext &aForwardContext, Error aError) +void Manager::CoapDtlsSession::SendErrorMessage(Error aError, const uint8_t *aToken, uint8_t aTokenLength) { Error error = kErrorNone; OwnedPtr message; + Coap::Message::Code code; message.Reset(NewPriorityMessage()); VerifyOrExit(message != nullptr, error = kErrorNoBufs); - SuccessOrExit(error = aForwardContext.ToHeader(*message, CoapCodeFromError(aError))); - SuccessOrExit(error = SendMessage(message.PassOwnership())); + code = (aError == kErrorParse) ? Coap::kCodeBadRequest : Coap::kCodeInternalError; -exit: - LogWarnOnError(error, "send error CoAP message"); -} + message->Init(Coap::kTypeNonConfirmable, code); + SuccessOrExit(error = message->SetToken(aToken, aTokenLength)); -void Manager::CoapDtlsSession::SendErrorMessage(const Coap::Message &aRequest, Error aError) -{ - Error error = kErrorNone; - OwnedPtr message; - - message.Reset(NewPriorityMessage()); - VerifyOrExit(message != nullptr, error = kErrorNoBufs); - - message->Init(Coap::kTypeNonConfirmable, CoapCodeFromError(aError)); - SuccessOrExit(error = message->SetTokenFromMessage(aRequest)); SuccessOrExit(error = SendMessage(message.PassOwnership())); exit: diff --git a/src/core/meshcop/border_agent.hpp b/src/core/meshcop/border_agent.hpp index 4053af94d..59997af08 100644 --- a/src/core/meshcop/border_agent.hpp +++ b/src/core/meshcop/border_agent.hpp @@ -327,8 +327,7 @@ private: void HandleTmfProxyTx(Coap::Message &aMessage); void HandleTmfDatasetGet(Coap::Message &aMessage, Uri aUri); Error ForwardToLeader(const Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo, Uri aUri); - void SendErrorMessage(const ForwardContext &aForwardContext, Error aError); - void SendErrorMessage(const Coap::Message &aRequest, Error aError); + void SendErrorMessage(Error aError, const uint8_t *aToken, uint8_t aTokenLength); static void HandleConnected(ConnectEvent aEvent, void *aContext); void HandleConnected(ConnectEvent aEvent); @@ -372,8 +371,6 @@ private: void HandleSessionDisconnected(CoapDtlsSession &aSession, CoapDtlsSession::ConnectEvent aEvent); void HandleCommissionerPetitionAccepted(CoapDtlsSession &aSession); - static Coap::Message::Code CoapCodeFromError(Error aError); - void PostServiceTask(void); void HandleServiceTask(void); #if OPENTHREAD_CONFIG_BORDER_ROUTING_ENABLE