From 0cb3d3c79211c996442537fe8658273d236d97bc Mon Sep 17 00:00:00 2001 From: Mia Yang <145632982+mia1yang@users.noreply.github.com> Date: Fri, 20 Sep 2024 14:28:37 +0000 Subject: [PATCH] [border-agent] add error reply for DeactivateEphemeralKeyMode dbus API (#2496) --- src/dbus/server/dbus_thread_object_rcp.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/dbus/server/dbus_thread_object_rcp.cpp b/src/dbus/server/dbus_thread_object_rcp.cpp index ceaa07aabde..36307d71c25 100644 --- a/src/dbus/server/dbus_thread_object_rcp.cpp +++ b/src/dbus/server/dbus_thread_object_rcp.cpp @@ -2010,7 +2010,22 @@ void DBusThreadObjectRcp::DeactivateEphemeralKeyModeHandler(DBusRequest &aReques otError error = OT_ERROR_NONE; auto threadHelper = mHost.GetThreadHelper(); - otBorderAgentClearEphemeralKey(threadHelper->GetInstance()); + VerifyOrExit(mBorderAgent.GetEphemeralKeyEnabled(), error = OT_ERROR_NOT_CAPABLE); + + switch (otBorderAgentGetState(threadHelper->GetInstance())) + { + case OT_BORDER_AGENT_STATE_STOPPED: + error = OT_ERROR_FAILED; + break; + case OT_BORDER_AGENT_STATE_ACTIVE: + error = OT_ERROR_INVALID_STATE; + break; + case OT_BORDER_AGENT_STATE_STARTED: + otBorderAgentClearEphemeralKey(threadHelper->GetInstance()); + break; + } + +exit: aRequest.ReplyOtResult(error); } @@ -2022,6 +2037,8 @@ void DBusThreadObjectRcp::ActivateEphemeralKeyModeHandler(DBusRequest &aRequest) auto args = std::tie(lifetime); std::string ePskc; + VerifyOrExit(mBorderAgent.GetEphemeralKeyEnabled(), error = OT_ERROR_NOT_CAPABLE); + SuccessOrExit(DBusMessageToTuple(*aRequest.GetMessage(), args), error = OT_ERROR_INVALID_ARGS); SuccessOrExit(mBorderAgent.CreateEphemeralKey(ePskc), error = OT_ERROR_INVALID_ARGS);