From cde2b1ce4feb646dabe926bd1b78551b5669b468 Mon Sep 17 00:00:00 2001 From: Rongli Sun Date: Tue, 8 Oct 2019 11:28:30 +0800 Subject: [PATCH] [key-manager] only start guard timer on switch to next key index (#4296) --- src/core/thread/key_manager.cpp | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/core/thread/key_manager.cpp b/src/core/thread/key_manager.cpp index cc70c472c..062273ddc 100644 --- a/src/core/thread/key_manager.cpp +++ b/src/core/thread/key_manager.cpp @@ -162,11 +162,16 @@ void KeyManager::SetCurrentKeySequence(uint32_t aKeySequence) { VerifyOrExit(aKeySequence != mKeySequence, Get().SignalIfFirst(OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER)); - // Check if the guard timer has expired if key rotation is requested. - if ((aKeySequence == (mKeySequence + 1)) && (mKeySwitchGuardTime != 0) && mKeyRotationTimer.IsRunning() && - mKeySwitchGuardEnabled) + if ((aKeySequence == (mKeySequence + 1)) && mKeyRotationTimer.IsRunning()) { - VerifyOrExit(mHoursSinceKeyRotation >= mKeySwitchGuardTime); + if (mKeySwitchGuardEnabled) + { + // Check if the guard timer has expired if key rotation is requested. + VerifyOrExit(mHoursSinceKeyRotation >= mKeySwitchGuardTime); + StartKeyRotationTimer(); + } + + mKeySwitchGuardEnabled = true; } mKeySequence = aKeySequence; @@ -175,12 +180,6 @@ void KeyManager::SetCurrentKeySequence(uint32_t aKeySequence) mMacFrameCounter = 0; mMleFrameCounter = 0; - if (mKeyRotationTimer.IsRunning()) - { - mKeySwitchGuardEnabled = true; - StartKeyRotationTimer(); - } - Get().Signal(OT_CHANGED_THREAD_KEY_SEQUENCE_COUNTER); exit: