mirror of
https://github.com/espressif/openthread.git
synced 2026-08-21 18:09:52 +00:00
Stop registration attempts if active timestamp in Pending dataset is ahead of value in Active dataset. (#1061)
This commit is contained in:
@@ -246,12 +246,28 @@ void DatasetManager::HandleTimer(void *aContext)
|
||||
|
||||
void DatasetManager::HandleTimer(void)
|
||||
{
|
||||
const Timestamp *pendingActiveTimestamp = NULL;
|
||||
const Timestamp *localActiveTimestamp = mNetif.GetActiveDataset().GetLocal().GetTimestamp();
|
||||
const ActiveTimestampTlv *tlv = static_cast<const ActiveTimestampTlv *>
|
||||
(mNetif.GetPendingDataset().GetNetwork().Get(Tlv::kActiveTimestamp));
|
||||
pendingActiveTimestamp = static_cast<const Timestamp *>(tlv);
|
||||
|
||||
VerifyOrExit(mMle.IsAttached(),);
|
||||
|
||||
VerifyOrExit(mLocal.Compare(mNetwork) < 0,);
|
||||
|
||||
Register();
|
||||
mTimer.Start(1000);
|
||||
|
||||
if (pendingActiveTimestamp != NULL &&
|
||||
localActiveTimestamp->Compare(*pendingActiveTimestamp) >= 0)
|
||||
{
|
||||
// stop registration attempts during dataset transition
|
||||
ExitNow();
|
||||
}
|
||||
else
|
||||
{
|
||||
mTimer.Start(1000);
|
||||
}
|
||||
|
||||
exit:
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user