diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index 511b16ca0..52dffaef1 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -2252,7 +2252,7 @@ ThreadError MleRouter::HandleChildUpdateRequest(const Message &aMessage, const I child = FindChild(macAddr); - if (child == NULL) + if ((child == NULL) || (child->mState != Neighbor::kStateValid)) { tlvs[tlvslength++] = Tlv::kStatus; SendChildUpdateResponse(NULL, aMessageInfo, tlvs, tlvslength, NULL); @@ -2326,7 +2326,6 @@ ThreadError MleRouter::HandleChildUpdateRequest(const Message &aMessage, const I child->mLastHeard = Timer::GetNow(); child->mAddSrcMatchEntryShort = true; - child->mState = Neighbor::kStateValid; SendChildUpdateResponse(child, aMessageInfo, tlvs, tlvslength, &challenge);