From 9a0ef5304a61d6cbf7e10f831ed91c5644782da7 Mon Sep 17 00:00:00 2001 From: huamenggg <52490135+huamenggg@users.noreply.github.com> Date: Tue, 17 Sep 2019 16:41:10 +0800 Subject: [PATCH] [meshcop] add IsBound check in JoinerRouter::HandleStateChanged (#4170) --- src/core/meshcop/joiner_router.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/meshcop/joiner_router.cpp b/src/core/meshcop/joiner_router.cpp index 2a8868353..37caf75e1 100644 --- a/src/core/meshcop/joiner_router.cpp +++ b/src/core/meshcop/joiner_router.cpp @@ -76,12 +76,12 @@ void JoinerRouter::HandleStateChanged(otChangedFlags aFlags) VerifyOrExit(Get().IsFullThreadDevice()); VerifyOrExit(aFlags & OT_CHANGED_THREAD_NETDATA); - Get().RemoveUnsecurePort(mSocket.GetSockName().mPort); - if (Get().IsJoiningEnabled()) { Ip6::SockAddr sockaddr; + VerifyOrExit(!mSocket.IsBound()); + sockaddr.mPort = GetJoinerUdpPort(); mSocket.Open(&JoinerRouter::HandleUdpReceive, this); @@ -91,6 +91,8 @@ void JoinerRouter::HandleStateChanged(otChangedFlags aFlags) } else { + Get().RemoveUnsecurePort(mSocket.GetSockName().mPort); + mSocket.Close(); }