diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index 42e79853c..58cccbe37 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -1255,6 +1255,8 @@ otError Mle::AppendNetworkData(Message &aMessage, bool aStableOnly) otError error = OT_ERROR_NONE; NetworkDataTlv tlv; + VerifyOrExit(!mRetrieveNewNetworkData, error = OT_ERROR_INVALID_STATE); + tlv.Init(); FillNetworkDataTlv(tlv, aStableOnly); diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index 765aad624..38f91c62e 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -936,10 +936,11 @@ otError MleRouter::HandleLinkAccept(const Message & aMessage, else { SetStateRouter(GetRloc16()); - mRetrieveNewNetworkData = true; - SendDataRequest(aMessageInfo.GetPeerAddr(), dataRequestTlvs, sizeof(dataRequestTlvs), 0); } + mRetrieveNewNetworkData = true; + SendDataRequest(aMessageInfo.GetPeerAddr(), dataRequestTlvs, sizeof(dataRequestTlvs), 0); + #if OPENTHREAD_CONFIG_ENABLE_TIME_SYNC GetNetif().GetTimeSync().HandleTimeSyncMessage(aMessage); #endif