Enhance Mle::HandleDataResponse (#692)

* Enhance Mle::HandleDataResponse

* Send DataRequest when vn_version is greater and no dataset included
This commit is contained in:
Lu Wang
2016-09-27 10:01:30 -07:00
committed by Jonathan Hui
parent 4a06d7ac01
commit 8dce81964f
+19 -1
View File
@@ -1687,7 +1687,8 @@ ThreadError Mle::HandleDataResponse(const Message &aMessage, const Ip6::MessageI
PendingTimestampTlv pendingTimestamp;
Tlv tlv;
uint16_t offset;
int8_t diff;
int8_t diff = 0;
bool dataRequest = false;
otLogInfoMle("Received Data Response\n");
@@ -1732,6 +1733,10 @@ ThreadError Mle::HandleDataResponse(const Message &aMessage, const Ip6::MessageI
aMessage.Read(offset, sizeof(tlv), &tlv);
mNetif.GetActiveDataset().Set(activeTimestamp, aMessage, offset + sizeof(tlv), tlv.GetLength());
}
else
{
dataRequest = true;
}
}
// Pending Timestamp
@@ -1745,6 +1750,10 @@ ThreadError Mle::HandleDataResponse(const Message &aMessage, const Ip6::MessageI
aMessage.Read(offset, sizeof(tlv), &tlv);
mNetif.GetPendingDataset().Set(activeTimestamp, aMessage, offset + sizeof(tlv), tlv.GetLength());
}
else
{
dataRequest = true;
}
}
// Network Data
@@ -1754,6 +1763,15 @@ ThreadError Mle::HandleDataResponse(const Message &aMessage, const Ip6::MessageI
exit:
(void)aMessageInfo;
if (diff > 0 && dataRequest)
{
uint8_t tlvs[] = {Tlv::kNetworkData};
SendDataRequest(aMessageInfo.GetPeerAddr(), tlvs, sizeof(tlvs));
mRetrieveNewNetworkData = true;
}
return error;
}