diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index 609633cde..7bcbb6acc 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -4115,8 +4115,8 @@ exit: bool MleRouter::IsExpectedToBecomeRouter(void) const { - return IsRouterEligible() && !IsRouterOrLeader() && - (Get().GetActiveRouterCount() < GetRouterUpgradeThreshold()) && !mAddressSolicitRejected; + return IsRouterEligible() && IsChild() && !mAddressSolicitRejected && + (GetRouterSelectionJitterTimeout() != 0 || mAddressSolicitPending); } void MleRouter::HandleAddressSolicit(void *aContext, otMessage *aMessage, const otMessageInfo *aMessageInfo)