From 985e5360b8e9a6051a54914b8d013d5cfe9cb0ae Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Wed, 22 Feb 2017 09:06:56 -0800 Subject: [PATCH] Do not setup neighbor state when responding to MLE Link Request from child. (#1355) --- src/core/thread/mle_router.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index 3e16e6577..f096866b3 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -712,11 +712,19 @@ ThreadError MleRouter::HandleLinkRequest(const Message &aMessage, const Ip6::Mes VerifyOrExit(memcmp(&neighbor->mMacAddr, &macAddr, sizeof(neighbor->mMacAddr)) == 0, ;); } } + else + { + // source is not a router + neighbor = NULL; + } } else { // lack of source address indicates router coming out of reset - VerifyOrExit((neighbor = GetNeighbor(macAddr)) != NULL, error = kThreadError_Drop); + VerifyOrExit((neighbor = GetNeighbor(macAddr)) != NULL && + neighbor->mState == Neighbor::kStateValid && + IsActiveRouter(neighbor->mValid.mRloc16), + error = kThreadError_Drop); } // TLV Request