From 925a951d7116c2fb84556975d121a2479901d08a Mon Sep 17 00:00:00 2001 From: Rongli Sun Date: Tue, 1 Oct 2024 00:24:58 +0800 Subject: [PATCH] [border-agent] process Keep Alive messages only for active commissioner (#10750) This commit updates how Keep Alive messages are handled by the Border Agent. After establishing a secure session, a device has `TIMEOUT_COMM_PET` (50 seconds) to take any action, including sending a petition to become an Active Commissioner. This change ensures that Keep Alive messages are ignored before a device becomes an Active Commissioner, preventing candidates from extending their sessions. Keep Alive messages are now processed only for Active Commissioners (BA in `kStateAccepted` state), aligning the implementation with the Thread specification. --- src/core/meshcop/border_agent.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/meshcop/border_agent.cpp b/src/core/meshcop/border_agent.cpp index f4161d2ba..7e751c5c2 100644 --- a/src/core/meshcop/border_agent.cpp +++ b/src/core/meshcop/border_agent.cpp @@ -493,7 +493,7 @@ template <> void BorderAgent::HandleTmf(Coap::Message &aMessage, template <> void BorderAgent::HandleTmf(Coap::Message &aMessage, const Ip6::MessageInfo &aMessageInfo) { - VerifyOrExit(mState != kStateStopped); + VerifyOrExit(mState == kStateAccepted); SuccessOrExit(ForwardToLeader(aMessage, aMessageInfo, kUriLeaderKeepAlive)); mTimer.Start(kKeepAliveTimeout); @@ -747,7 +747,7 @@ void BorderAgent::HandleTimeout(void) if (Get().IsConnected()) { Get().Disconnect(); - LogWarn("Reset commissioner session"); + LogWarn("Reset secure session"); } }