diff --git a/src/core/meshcop/dataset_manager.cpp b/src/core/meshcop/dataset_manager.cpp index 8a717551d..a78472da6 100644 --- a/src/core/meshcop/dataset_manager.cpp +++ b/src/core/meshcop/dataset_manager.cpp @@ -295,12 +295,7 @@ Error DatasetManager::Save(const Timestamp &aTimestamp, const Message &aMessage, SuccessOrExit(error = dataset.Write(aTimestamp)); } - SuccessOrExit(error = Save(dataset)); - - if (IsPendingDataset()) - { - Get().StartDelayTimer(dataset); - } + error = Save(dataset); exit: return error; @@ -368,11 +363,6 @@ void DatasetManager::SaveLocal(const Dataset &aDataset) { LocalSave(aDataset); - if (IsPendingDataset()) - { - Get().StartDelayTimer(aDataset); - } - switch (Get().GetRole()) { case Mle::kRoleDisabled: @@ -431,6 +421,11 @@ void DatasetManager::LocalSave(const Dataset &aDataset) mLocalTimestampValid = (aDataset.ReadTimestamp(mType, mLocalTimestamp) == kErrorNone); mLocalUpdateTime = TimerMilli::GetNow(); + + if (IsPendingDataset()) + { + Get().StartDelayTimer(aDataset); + } } void DatasetManager::SignalDatasetChange(void) const