[meshcop] simplify msg copy (#3327)

This commit is contained in:
hjian2017
2018-11-28 10:10:51 -08:00
committed by Jonathan Hui
parent 8d12513591
commit 88c8ed05eb
+4 -16
View File
@@ -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());