diff --git a/src/core/meshcop/border_agent.cpp b/src/core/meshcop/border_agent.cpp index 9f72ec137..acb137eb9 100644 --- a/src/core/meshcop/border_agent.cpp +++ b/src/core/meshcop/border_agent.cpp @@ -230,10 +230,10 @@ void BorderAgent::HandleCoapResponse(void * aContext, Coap::Message * message = NULL; otError error; - VerifyOrExit((message = NewMeshCoPMessage(instance.Get())) != NULL, error = OT_ERROR_NO_BUFS); SuccessOrExit(error = aResult); + VerifyOrExit((message = NewMeshCoPMessage(instance.Get())) != NULL, error = OT_ERROR_NO_BUFS); - if (forwardContext.IsPetition()) + if (forwardContext.IsPetition() && response->GetCode() == OT_COAP_CODE_CHANGED) { StateTlv stateTlv; @@ -257,7 +257,7 @@ void BorderAgent::HandleCoapResponse(void * aContext, SuccessOrExit(error = forwardContext.ToHeader(*message, response->GetCode())); - if (response->GetLength() - response->GetOffset() > 0) + if (response->GetLength() > response->GetOffset()) { SuccessOrExit(error = message->SetPayloadMarker()); }