[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.
This commit is contained in:
Rongli Sun
2024-09-30 09:24:58 -07:00
committed by GitHub
parent 6593d2c9fd
commit 925a951d71
+2 -2
View File
@@ -493,7 +493,7 @@ template <> void BorderAgent::HandleTmf<kUriPendingGet>(Coap::Message &aMessage,
template <>
void BorderAgent::HandleTmf<kUriCommissionerKeepAlive>(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<Tmf::SecureAgent>().IsConnected())
{
Get<Tmf::SecureAgent>().Disconnect();
LogWarn("Reset commissioner session");
LogWarn("Reset secure session");
}
}