@@ -95,13 +95,9 @@ Status ServerInstance::HandleSetActiveDatasetRequest(bool failSafeArmed,
95
95
return Status::InvalidInState;
96
96
}
97
97
98
- mBreadcrumb = req.breadcrumb ;
99
- mRandomNumber = Crypto::GetRandU32 ();
100
- CHIP_ERROR err = mDelegate ->SetActiveDataset (activeDataset, mRandomNumber , this );
101
- if (err != CHIP_NO_ERROR)
102
- {
103
- mRandomNumber = 0 ;
104
- }
98
+ mBreadcrumb = req.breadcrumb ;
99
+ mSetActiveDatasetSequenceNumber ++;
100
+ CHIP_ERROR err = mDelegate ->SetActiveDataset (activeDataset, mSetActiveDatasetSequenceNumber , this );
105
101
return StatusIB (err).mStatus ;
106
102
}
107
103
@@ -161,7 +157,8 @@ void ServerInstance::InvokeCommand(HandlerContext & ctxt)
161
157
Status status = HandleSetActiveDatasetRequest (IsFailSafeArmed (ctx.mCommandHandler .GetAccessingFabricIndex ()), req);
162
158
if (status != Status::Success)
163
159
{
164
- OnActivateDatasetComplete (mRandomNumber , ChipError (ChipError::SdkPart::kIMGlobalStatus , to_underlying (status)));
160
+ OnActivateDatasetComplete (mSetActiveDatasetSequenceNumber ,
161
+ ChipError (ChipError::SdkPart::kIMGlobalStatus , to_underlying (status)));
165
162
}
166
163
}
167
164
else
@@ -317,20 +314,19 @@ void ServerInstance::CommitSavedBreadcrumb()
317
314
mBreadcrumb .ClearValue ();
318
315
}
319
316
320
- void ServerInstance::OnActivateDatasetComplete (uint32_t randomNumber , CHIP_ERROR error)
317
+ void ServerInstance::OnActivateDatasetComplete (uint32_t sequenceNum , CHIP_ERROR error)
321
318
{
322
319
auto commandHandleRef = std::move (mAsyncCommandHandle );
323
320
auto commandHandle = commandHandleRef.Get ();
324
321
if (commandHandle == nullptr )
325
322
{
326
323
return ;
327
324
}
328
- if (mRandomNumber != randomNumber )
325
+ if (mSetActiveDatasetSequenceNumber != sequenceNum )
329
326
{
330
327
// Previous SetActiveDatasetRequest was handled.
331
328
return ;
332
329
}
333
- mRandomNumber = 0 ;
334
330
if (error == CHIP_NO_ERROR)
335
331
{
336
332
// The successful completion of the activation process SHALL disarm the fail-safe timer.
@@ -356,8 +352,6 @@ void ServerInstance::OnFailSafeTimerExpired()
356
352
{
357
353
return ;
358
354
}
359
- // Reset the RandomNumeber so that the OnActivateDatasetComplete will not handle the previous SetActiveDatasetRequest command.
360
- mRandomNumber = 0 ;
361
355
commandHandle->AddStatus (mPath , Status::Timeout);
362
356
}
363
357
0 commit comments