From 5df7c83fb39359eaad9f773759b408769a1b7b95 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Sat, 13 Jan 2018 21:38:08 +0000 Subject: [PATCH] [mle] fix bug in restarting router state update timer (#2472) This commit moves restarting the state update timer to the top of `MleRouter::HandleStateUpdateTimer()`. This ensures that the timer continues to fire periodically. Prior to this change, the state update timer is not properly restarted when `mRouterSelectionJitterTimeout` expires. --- src/core/thread/mle_router.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index 484c0b1c0..504bb3810 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -442,7 +442,6 @@ otError MleRouter::SetStateRouter(uint16_t aRloc16) mRouters[mRouterId].SetNextHop(mRouterId); mPreviousPartitionId = mLeaderData.GetPartitionId(); netif.GetNetworkDataLeader().Stop(); - mStateUpdateTimer.Start(kStateUpdatePeriod); netif.GetIp6().SetForwardingEnabled(true); netif.GetIp6().GetMpl().SetTimerExpirations(kMplRouterDataMessageTimerExpirations); netif.GetMac().SetBeaconEnabled(true); @@ -1792,6 +1791,8 @@ void MleRouter::HandleStateUpdateTimer(void) { bool routerStateUpdate = false; + mStateUpdateTimer.Start(kStateUpdatePeriod); + if (mChallengeTimeout > 0) { mChallengeTimeout--; @@ -1986,8 +1987,6 @@ void MleRouter::HandleStateUpdateTimer(void) SynchronizeChildNetworkData(); - mStateUpdateTimer.Start(kStateUpdatePeriod); - exit: return; }