From 88c8ed05ebb132585a106fce204f376578d9b91e Mon Sep 17 00:00:00 2001 From: hjian2017 <30794429+hjian2017@users.noreply.github.com> Date: Thu, 29 Nov 2018 02:10:51 +0800 Subject: [PATCH] [meshcop] simplify msg copy (#3327) --- src/core/meshcop/joiner_router.cpp | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/src/core/meshcop/joiner_router.cpp b/src/core/meshcop/joiner_router.cpp index 0543c9b62..d70e0a7ac 100644 --- a/src/core/meshcop/joiner_router.cpp +++ b/src/core/meshcop/joiner_router.cpp @@ -148,6 +148,7 @@ void JoinerRouter::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &a JoinerRouterLocatorTlv rloc; ExtendedTlv tlv; uint16_t borderAgentRloc; + uint16_t offset; otLogInfoMeshCoP("JoinerRouter::HandleUdpReceive"); @@ -175,22 +176,9 @@ void JoinerRouter::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &a tlv.SetType(Tlv::kJoinerDtlsEncapsulation); tlv.SetLength(aMessage.GetLength() - aMessage.GetOffset()); SuccessOrExit(error = message->Append(&tlv, sizeof(tlv))); - - while (aMessage.GetOffset() < aMessage.GetLength()) - { - uint16_t length = aMessage.GetLength() - aMessage.GetOffset(); - uint8_t tmp[16]; - - if (length >= sizeof(tmp)) - { - length = sizeof(tmp); - } - - aMessage.Read(aMessage.GetOffset(), length, tmp); - aMessage.MoveOffset(length); - - SuccessOrExit(error = message->Append(tmp, length)); - } + offset = message->GetLength(); + SuccessOrExit(error = message->SetLength(offset + tlv.GetLength())); + aMessage.CopyTo(aMessage.GetOffset(), offset, tlv.GetLength(), *message); messageInfo.SetSockAddr(netif.GetMle().GetMeshLocal16()); messageInfo.SetPeerAddr(netif.GetMle().GetMeshLocal16());