From 4ed0a4567727d25addcdda98974d200c27b7fe8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B2=E6=99=93=E6=99=93?= Date: Wed, 13 Aug 2025 11:43:54 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E7=BE=A4=E7=BB=84?= =?UTF-8?q?=E5=90=8E=E5=86=8D=E5=86=99ACL?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 史晓晓 --- .../include/authentication/dm_auth_manager.h | 8 +- .../authentication_v2/dm_auth_manager_base.h | 2 +- .../hichain/hichain_connector_callback.h | 2 +- .../src/authentication/dm_auth_manager.cpp | 74 +++++++++++++++---- .../dm_auth_manager_base.cpp | 2 +- .../dependency/hichain/hichain_connector.cpp | 8 +- .../dm_auth_manager_fuzzer.cpp | 3 +- .../hichain_connector_fuzzer.cpp | 2 +- .../onerror_fuzzer/on_error_fuzzer.cpp | 3 +- .../onfinish_fuzzer/on_finish_fuzzer.cpp | 3 +- .../onrequest_fuzzer/on_request_fuzzer.cpp | 3 +- .../UTTest_dm_auth_manager_first.cpp | 4 +- .../UTTest_dm_auth_manager_second.cpp | 20 ++--- .../UTTest_hichain_connector.cpp | 3 +- .../commonunittest/UTTest_hichain_connector.h | 2 +- 15 files changed, 97 insertions(+), 42 deletions(-) diff --git a/services/implementation/include/authentication/dm_auth_manager.h b/services/implementation/include/authentication/dm_auth_manager.h index a4d1ec014..76a2316ad 100644 --- a/services/implementation/include/authentication/dm_auth_manager.h +++ b/services/implementation/include/authentication/dm_auth_manager.h @@ -278,7 +278,7 @@ public: * @tc.desc: Join Member of the DeviceManager Authenticate Manager * @tc.type: FUNC */ - void OnMemberJoin(int64_t requestId, int32_t status); + void OnMemberJoin(int64_t requestId, int32_t status, int32_t operationCode); /** * @tc.name: DmAuthManager::EstablishAuthChannel @@ -595,6 +595,8 @@ private: void ProcessReqPublicKey(); void RegisterCleanNotifyCallback(CleanNotifyCallback cleanNotifyCallback); void GetBindCallerInfo(); + void ProcessReqAuthTerminate(); + void ResetParams(); private: std::shared_ptr softbusConnector_; @@ -645,6 +647,10 @@ private: CleanNotifyCallback cleanNotifyCallback_{nullptr}; std::mutex bindParamMutex_; std::map bindParam_; + std::mutex groupMutex_; + bool isAddMember_ = false; + bool isCreateGroup_ = false; + bool transiteToFinishState_ = false; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/implementation/include/authentication_v2/dm_auth_manager_base.h b/services/implementation/include/authentication_v2/dm_auth_manager_base.h index c680323a4..d3a4fa411 100644 --- a/services/implementation/include/authentication_v2/dm_auth_manager_base.h +++ b/services/implementation/include/authentication_v2/dm_auth_manager_base.h @@ -144,7 +144,7 @@ public: virtual void OnGroupCreated(int64_t requestId, const std::string &groupId); - virtual void OnMemberJoin(int64_t requestId, int32_t status); + virtual void OnMemberJoin(int64_t requestId, int32_t status, int32_t operationCode); virtual int32_t EstablishAuthChannel(const std::string &deviceId); diff --git a/services/implementation/include/dependency/hichain/hichain_connector_callback.h b/services/implementation/include/dependency/hichain/hichain_connector_callback.h index 5590744cc..4c90cd961 100644 --- a/services/implementation/include/dependency/hichain/hichain_connector_callback.h +++ b/services/implementation/include/dependency/hichain/hichain_connector_callback.h @@ -21,7 +21,7 @@ namespace DistributedHardware { class IHiChainConnectorCallback { public: virtual void OnGroupCreated(int64_t requestId, const std::string &groupId) = 0; - virtual void OnMemberJoin(int64_t requestId, int32_t status) = 0; + virtual void OnMemberJoin(int64_t requestId, int32_t status, int32_t operationCode) = 0; virtual std::string GetConnectAddr(std::string deviceId) = 0; virtual int32_t GetPinCode(std::string &code) = 0; }; diff --git a/services/implementation/src/authentication/dm_auth_manager.cpp b/services/implementation/src/authentication/dm_auth_manager.cpp index 42dc1d7df..11169989e 100644 --- a/services/implementation/src/authentication/dm_auth_manager.cpp +++ b/services/implementation/src/authentication/dm_auth_manager.cpp @@ -576,6 +576,14 @@ void DmAuthManager::OnSessionOpened(int32_t sessionId, int32_t sessionSide, int3 void DmAuthManager::OnSessionClosed(const int32_t sessionId) { LOGI("DmAuthManager::OnSessionClosed sessionId = %{public}d", sessionId); + { + std::lock_guard lock(groupMutex_); + if (authResponseState_->GetStateType() == AUTH_RESPONSE_SHOW && + authResponseContext_->replay == DM_OK && isCreateGroup_ && !isAddMember_) { + LOGI("wait addmemer callback"); + return; + } + } if (authResponseState_ != nullptr && authResponseContext_ != nullptr) { isFinishOfLocal_ = false; authResponseContext_->state = authResponseState_->GetStateType(); @@ -664,14 +672,7 @@ void DmAuthManager::ProcessSinkMsg() } break; case MSG_TYPE_REQ_AUTH_TERMINATE: - if (authResponseState_->GetStateType() != AuthState::AUTH_RESPONSE_FINISH) { - isFinishOfLocal_ = false; - authResponseContext_->state = authResponseState_->GetStateType(); - if (authResponseContext_->reply == DM_OK) { - authResponseContext_->state = AuthState::AUTH_RESPONSE_FINISH; - } - authResponseState_->TransitionTo(std::make_shared()); - } + ProcessReqAuthTerminate(); break; case MSG_TYPE_REQ_PUBLICKEY: ProcessReqPublicKey(); @@ -691,6 +692,27 @@ void DmAuthManager::ProcessSinkMsg() } } +void DmAuthManager::ProcessReqAuthTerminate() +{ + { + std::lock_guard lock(groupMutex_); + if (authResponseState_->GetStateType() == AUTH_RESPONSE_SHOW && + authResponseContext_->replay == DM_OK && isCreateGroup_ && !isAddMember_) { + LOGI("wait addmemer callback"); + transiteToFinishState_ = true; + return; + } + } + if (authResponseState_->GetStateType() != AuthState::AUTH_RESPONSE_FINISH) { + isFinishOfLocal_ = false; + authResponseContext_->state = authResponseState_->GetStateType(); + if (authResponseContext_->reply == DM_OK) { + authResponseContext_->state = AuthState::AUTH_RESPONSE_FINISH; + } + authResponseState_->TransitionTo(std::make_shared()); + } +} + void DmAuthManager::OnDataReceived(const int32_t sessionId, const std::string message) { if (authResponseContext_ == nullptr || authMessageProcessor_ == nullptr || @@ -740,7 +762,6 @@ void DmAuthManager::OnGroupCreated(int64_t requestId, const std::string &groupId softbusConnector_->GetSoftbusSession()->SendData(authResponseContext_->sessionId, message); return; } - CompatiblePutAcl(); std::string pinCode = ""; if (authResponseContext_->authType == AUTH_TYPE_IMPORT_AUTH_CODE && !importAuthCode_.empty()) { GetAuthCode(authResponseContext_->hostPkgName, pinCode); @@ -764,7 +785,7 @@ void DmAuthManager::OnGroupCreated(int64_t requestId, const std::string &groupId authResponseState_->TransitionTo(std::make_shared()); } -void DmAuthManager::OnMemberJoin(int64_t requestId, int32_t status) +void DmAuthManager::OnMemberJoin(int64_t requestId, int32_t status, int32_t operationCode) { isAddingMember_ = false; if (authResponseContext_ == nullptr || authUiStateMgr_ == nullptr) { @@ -772,6 +793,25 @@ void DmAuthManager::OnMemberJoin(int64_t requestId, int32_t status) return; } LOGI("DmAuthManager OnMemberJoin start authTimes %{public}d", authTimes_); + if (status == DM_OK && operationCode == GroupOperationCode::MEMBER_JOIN) { + LOGI("join group success."); + CompatiblePutAcl(); + { + std::lock_guard lock(groupMutex_); + isAddMember_ = true; + if (transiteToFinishState_) { + LOGI("Have received src finish state."); + authResponseContext_->state = AuthState::AUTH_RESPONSE_FINISH; + authResponseState_->TransitionTo(std::make_shared()); + } + } + } + if (status == DM_OK && operationCode == GroupOperationCode::GROUP_CREATE) { + { + std::lock_guard lock(groupMutex_); + isCreateGroup_ = true; + } + } if ((authRequestState_ != nullptr) && (authResponseState_ == nullptr)) { MemberJoinAuthRequest(requestId, status); } else if ((authResponseState_ != nullptr) && (authRequestState_ == nullptr)) { @@ -798,10 +838,6 @@ void DmAuthManager::MemberJoinAuthRequest(int64_t requestId, int32_t status) if (timer_ != nullptr) { timer_->DeleteTimer(std::string(ADD_TIMEOUT_TASK)); } - if (status == DM_OK) { - LOGI("join group success."); - CompatiblePutAcl(); - } if (authResponseContext_->authType == AUTH_TYPE_IMPORT_AUTH_CODE) { HandleMemberJoinImportAuthCode(requestId, status); return; @@ -1515,6 +1551,12 @@ void DmAuthManager::AuthenticateFinish() } else if (authRequestState_ != nullptr) { SrcAuthenticateFinish(); } + ResetParams(); + LOGI("DmAuthManager::AuthenticateFinish complete"); +} + +void DmAuthManager::ResetParams() +{ isFinishOfLocal_ = true; authResponseContext_ = nullptr; authMessageProcessor_ = nullptr; @@ -1522,10 +1564,12 @@ void DmAuthManager::AuthenticateFinish() authRequestStateTemp_ = nullptr; authenticationType_ = USER_OPERATION_TYPE_ALLOW_AUTH; bundleName_ = ""; + isAddMember_ = false; + isCreateGroup_ = false; + transiteToFinishState_ = false; if (cleanNotifyCallback_ != nullptr) { cleanNotifyCallback_(0); } - LOGI("DmAuthManager::AuthenticateFinish complete"); } int32_t DmAuthManager::RegisterUiStateCallback(const std::string pkgName) diff --git a/services/implementation/src/authentication_v2/dm_auth_manager_base.cpp b/services/implementation/src/authentication_v2/dm_auth_manager_base.cpp index 3c9fb29de..f5ec91846 100644 --- a/services/implementation/src/authentication_v2/dm_auth_manager_base.cpp +++ b/services/implementation/src/authentication_v2/dm_auth_manager_base.cpp @@ -171,7 +171,7 @@ void AuthManagerBase::OnGroupCreated(int64_t requestId, const std::string &group LOGE("OnGroupCreated is not implemented in the current version"); } -void AuthManagerBase::OnMemberJoin(int64_t requestId, int32_t status) +void AuthManagerBase::OnMemberJoin(int64_t requestId, int32_t status, int32_t operationCode) { LOGE("OnMemberJoin is not implemented in the current version"); } diff --git a/services/implementation/src/dependency/hichain/hichain_connector.cpp b/services/implementation/src/dependency/hichain/hichain_connector.cpp index 6b3fda504..ea4ddd7b2 100644 --- a/services/implementation/src/dependency/hichain/hichain_connector.cpp +++ b/services/implementation/src/dependency/hichain/hichain_connector.cpp @@ -336,7 +336,7 @@ int32_t HiChainConnector::AddMember(const std::string &deviceId, const std::stri LOGE("DecodeRequestAuth jsonStr error"); return ERR_DM_FAILED; } - if (!IsString(jsonObject, TAG_DEVICE_ID) || !IsInt32(jsonObject, PIN_CODE_KEY) || + if (!IsString(jsonObject, TAG_DEVICE_ID) || !IsString(jsonObject, PIN_CODE_KEY) || !IsString(jsonObject, TAG_GROUP_ID) || !IsInt64(jsonObject, TAG_REQUEST_ID) || !IsString(jsonObject, TAG_GROUP_NAME)) { LOGE("HiChainConnector::AddMember err json string."); @@ -386,7 +386,7 @@ void HiChainConnector::onFinish(int64_t requestId, int operationCode, const char SysEventWrite(std::string(ADD_HICHAIN_GROUP_SUCCESS), DM_HISYEVENT_BEHAVIOR, std::string(ADD_HICHAIN_GROUP_SUCCESS_MSG)); if (hiChainConnectorCallback_ != nullptr) { - hiChainConnectorCallback_->OnMemberJoin(requestId, DM_OK); + hiChainConnectorCallback_->OnMemberJoin(requestId, DM_OK, operationCode); } } if (operationCode == GroupOperationCode::GROUP_CREATE) { @@ -405,7 +405,7 @@ void HiChainConnector::onFinish(int64_t requestId, int operationCode, const char } } else { if (hiChainConnectorCallback_ != nullptr) { - hiChainConnectorCallback_->OnMemberJoin(requestId, DM_OK); + hiChainConnectorCallback_->OnMemberJoin(requestId, DM_OK, operationCode); hiChainConnectorCallback_->OnGroupCreated(requestId, data); } } @@ -439,7 +439,7 @@ void HiChainConnector::onError(int64_t requestId, int operationCode, int errorCo SysEventWrite(std::string(ADD_HICHAIN_GROUP_FAILED), DM_HISYEVENT_BEHAVIOR, std::string(ADD_HICHAIN_GROUP_FAILED_MSG)); if (hiChainConnectorCallback_ != nullptr) { - hiChainConnectorCallback_->OnMemberJoin(requestId, ERR_DM_ADD_GROUP_FAILED); + hiChainConnectorCallback_->OnMemberJoin(requestId, ERR_DM_ADD_GROUP_FAILED, operationCode); } } if (operationCode == GroupOperationCode::GROUP_CREATE) { diff --git a/test/commonfuzztest/dmauthmanager_fuzzer/dm_auth_manager_fuzzer.cpp b/test/commonfuzztest/dmauthmanager_fuzzer/dm_auth_manager_fuzzer.cpp index 053f739b4..0ab530b0c 100644 --- a/test/commonfuzztest/dmauthmanager_fuzzer/dm_auth_manager_fuzzer.cpp +++ b/test/commonfuzztest/dmauthmanager_fuzzer/dm_auth_manager_fuzzer.cpp @@ -65,6 +65,7 @@ void DmAuthManagerFuzzTest(const uint8_t* data, size_t size) FuzzedDataProvider fdp(data, size); std::string str(reinterpret_cast(data), size); int32_t bindLevel = fdp.ConsumeIntegral(); + int32_t operationCode = fdp.ConsumeIntegral(); g_authManager->authMessageProcessor_ = std::make_shared(g_authManager); g_authManager->authMessageProcessor_->authResponseContext_ = std::make_shared(); g_authManager->authRequestContext_ = std::make_shared(); @@ -87,7 +88,7 @@ void DmAuthManagerFuzzTest(const uint8_t* data, size_t size) g_authManager->ShowStartAuthDialog(); g_authManager->OnDataReceived(g_sessionId, str); g_authManager->OnGroupCreated(g_requestId, str); - g_authManager->OnMemberJoin(g_requestId, g_status); + g_authManager->OnMemberJoin(g_requestId, g_status, operationCode); g_authManager->StartNegotiate(g_sessionId); g_authManager->RespNegotiate(g_sessionId); g_authManager->SendAuthRequest(g_sessionId); diff --git a/test/commonfuzztest/hichainconnector_fuzzer/hichain_connector_fuzzer.cpp b/test/commonfuzztest/hichainconnector_fuzzer/hichain_connector_fuzzer.cpp index dcc417f83..c9eec26f7 100644 --- a/test/commonfuzztest/hichainconnector_fuzzer/hichain_connector_fuzzer.cpp +++ b/test/commonfuzztest/hichainconnector_fuzzer/hichain_connector_fuzzer.cpp @@ -43,7 +43,7 @@ public: (void)requestId; (void)groupId; } - void OnMemberJoin(int64_t requestId, int32_t status) override + void OnMemberJoin(int64_t requestId, int32_t status, int32_t operationCode) override { (void)requestId; (void)status; diff --git a/test/commonfuzztest/onerror_fuzzer/on_error_fuzzer.cpp b/test/commonfuzztest/onerror_fuzzer/on_error_fuzzer.cpp index 781698e0d..afc699f18 100644 --- a/test/commonfuzztest/onerror_fuzzer/on_error_fuzzer.cpp +++ b/test/commonfuzztest/onerror_fuzzer/on_error_fuzzer.cpp @@ -37,10 +37,11 @@ public: (void)requestId; (void)groupId; } - void OnMemberJoin(int64_t requestId, int32_t status) override + void OnMemberJoin(int64_t requestId, int32_t status, int32_t operationCode) override { (void)requestId; (void)status; + (void)operationCode; } std::string GetConnectAddr(std::string deviceId) override { diff --git a/test/commonfuzztest/onfinish_fuzzer/on_finish_fuzzer.cpp b/test/commonfuzztest/onfinish_fuzzer/on_finish_fuzzer.cpp index 19b2b0ae5..f27b4ae57 100644 --- a/test/commonfuzztest/onfinish_fuzzer/on_finish_fuzzer.cpp +++ b/test/commonfuzztest/onfinish_fuzzer/on_finish_fuzzer.cpp @@ -37,10 +37,11 @@ public: (void)requestId; (void)groupId; } - void OnMemberJoin(int64_t requestId, int32_t status) override + void OnMemberJoin(int64_t requestId, int32_t status, int32_t operationCode) override { (void)requestId; (void)status; + (void)operationCode; } std::string GetConnectAddr(std::string deviceId) override { diff --git a/test/commonfuzztest/onrequest_fuzzer/on_request_fuzzer.cpp b/test/commonfuzztest/onrequest_fuzzer/on_request_fuzzer.cpp index 4a9a99f96..7399f8507 100644 --- a/test/commonfuzztest/onrequest_fuzzer/on_request_fuzzer.cpp +++ b/test/commonfuzztest/onrequest_fuzzer/on_request_fuzzer.cpp @@ -36,10 +36,11 @@ public: (void)requestId; (void)groupId; } - void OnMemberJoin(int64_t requestId, int32_t status) override + void OnMemberJoin(int64_t requestId, int32_t status, int32_t operationCode) override { (void)requestId; (void)status; + (void)operationCode; } std::string GetConnectAddr(std::string deviceId) override { diff --git a/test/commonunittest/UTTest_dm_auth_manager_first.cpp b/test/commonunittest/UTTest_dm_auth_manager_first.cpp index 68638d2dd..deb454346 100644 --- a/test/commonunittest/UTTest_dm_auth_manager_first.cpp +++ b/test/commonunittest/UTTest_dm_auth_manager_first.cpp @@ -313,7 +313,7 @@ HWTEST_F(DmAuthManagerTest, JoinNetwork_001, testing::ext::TestSize.Level1) const std::string groupId = "{}"; int32_t status = 1; authManager_->OnGroupCreated(requestId, groupId); - authManager_->OnMemberJoin(requestId, status); + authManager_->OnMemberJoin(requestId, status, 0); authManager_->OnDataReceived(sessionId, message); authManager_->SetAuthRequestState(authRequestState); int32_t ret = authManager_->JoinNetwork(); @@ -380,7 +380,7 @@ HWTEST_F(DmAuthManagerTest, SetPageId_002, testing::ext::TestSize.Level1) int32_t status = 2; JsonObject jsonObject; jsonObject[TAG_MSG_TYPE] = MSG_TYPE_AUTH_BY_PIN; - authManager_->OnMemberJoin(requestId, status); + authManager_->OnMemberJoin(requestId, status, 0); authManager_->OnDataReceived(sessionId, message); authManager_->authResponseContext_ = std::make_shared(); authManager_->authRequestState_ = std::make_shared(); diff --git a/test/commonunittest/UTTest_dm_auth_manager_second.cpp b/test/commonunittest/UTTest_dm_auth_manager_second.cpp index 7e654c117..46e18cbc8 100644 --- a/test/commonunittest/UTTest_dm_auth_manager_second.cpp +++ b/test/commonunittest/UTTest_dm_auth_manager_second.cpp @@ -174,7 +174,7 @@ HWTEST_F(DmAuthManagerTest, OnMemberJoin_001, testing::ext::TestSize.Level1) int64_t requestId = 0; int32_t status = 11; authManager_->authResponseContext_ = nullptr; - authManager_->OnMemberJoin(requestId, status); + authManager_->OnMemberJoin(requestId, status, 0); ASSERT_EQ(authManager_->isFinishOfLocal_, true); } @@ -183,7 +183,7 @@ HWTEST_F(DmAuthManagerTest, OnMemberJoin_002, testing::ext::TestSize.Level1) int64_t requestId = 0; int32_t status = 11; authManager_->authUiStateMgr_ = nullptr; - authManager_->OnMemberJoin(requestId, status); + authManager_->OnMemberJoin(requestId, status, 0); ASSERT_EQ(authManager_->isFinishOfLocal_, true); } @@ -194,7 +194,7 @@ HWTEST_F(DmAuthManagerTest, OnMemberJoin_003, testing::ext::TestSize.Level1) authManager_->authRequestState_ = std::make_shared(); authManager_->authResponseState_ = nullptr; authManager_->authResponseContext_->authType = 5; - authManager_->OnMemberJoin(requestId, status); + authManager_->OnMemberJoin(requestId, status, 0); ASSERT_EQ(authManager_->isFinishOfLocal_, true); } @@ -206,7 +206,7 @@ HWTEST_F(DmAuthManagerTest, OnMemberJoin_004, testing::ext::TestSize.Level1) authManager_->authResponseState_ = nullptr; authManager_->authResponseContext_->authType = 6; authManager_->authResponseContext_->requestId = 1; - authManager_->OnMemberJoin(requestId, status); + authManager_->OnMemberJoin(requestId, status, 0); ASSERT_EQ(authManager_->isFinishOfLocal_, true); } @@ -218,7 +218,7 @@ HWTEST_F(DmAuthManagerTest, OnMemberJoin_006, testing::ext::TestSize.Level1) authManager_->authResponseState_ = nullptr; authManager_->authResponseContext_->authType = 6; authManager_->authResponseContext_->requestId = 0; - authManager_->OnMemberJoin(requestId, status); + authManager_->OnMemberJoin(requestId, status, 0); ASSERT_EQ(authManager_->isFinishOfLocal_, true); } @@ -230,7 +230,7 @@ HWTEST_F(DmAuthManagerTest, OnMemberJoin_007, testing::ext::TestSize.Level1) authManager_->authResponseState_ = std::make_shared(); authManager_->authResponseContext_->authType = 6; authManager_->authResponseContext_->requestId = 0; - authManager_->OnMemberJoin(requestId, status); + authManager_->OnMemberJoin(requestId, status, 0); ASSERT_EQ(authManager_->isFinishOfLocal_, true); } @@ -240,7 +240,7 @@ HWTEST_F(DmAuthManagerTest, OnMemberJoin_008, testing::ext::TestSize.Level1) int32_t status = 0; authManager_->authRequestState_ = nullptr; authManager_->authResponseState_ = nullptr; - authManager_->OnMemberJoin(requestId, status); + authManager_->OnMemberJoin(requestId, status, 0); ASSERT_EQ(authManager_->isFinishOfLocal_, true); } @@ -257,17 +257,17 @@ HWTEST_F(DmAuthManagerTest, OnMemberJoin_009, testing::ext::TestSize.Level1) authManager_->authResponseState_ = authResponseInitStateMock; authManager_->authResponseContext_->isFinish = true; authManager_->authResponseContext_->requestId = 0; - authManager_->OnMemberJoin(requestId, status); + authManager_->OnMemberJoin(requestId, status, 0); ASSERT_TRUE(authManager_->authResponseContext_->isFinish); authManager_->authResponseContext_->isFinish = true; authManager_->authResponseContext_->requestId = 1; - authManager_->OnMemberJoin(requestId, status); + authManager_->OnMemberJoin(requestId, status, 0); ASSERT_FALSE(authManager_->authResponseContext_->isFinish); authManager_->authResponseContext_->isFinish = true; status = ERR_DM_FAILED; - authManager_->OnMemberJoin(requestId, status); + authManager_->OnMemberJoin(requestId, status, 0); ASSERT_FALSE(authManager_->authResponseContext_->isFinish); } diff --git a/test/commonunittest/UTTest_hichain_connector.cpp b/test/commonunittest/UTTest_hichain_connector.cpp index 9b4d5b0a4..e7088f210 100755 --- a/test/commonunittest/UTTest_hichain_connector.cpp +++ b/test/commonunittest/UTTest_hichain_connector.cpp @@ -52,10 +52,11 @@ public: (void)requestId; (void)groupId; } - void OnMemberJoin(int64_t requestId, int32_t status) override + void OnMemberJoin(int64_t requestId, int32_t status, int32_t operationCode) override { (void)requestId; (void)status; + (void)operationCode; } std::string GetConnectAddr(std::string deviceId) { diff --git a/test/commonunittest/UTTest_hichain_connector.h b/test/commonunittest/UTTest_hichain_connector.h index e41fe69b9..e94d2040a 100644 --- a/test/commonunittest/UTTest_hichain_connector.h +++ b/test/commonunittest/UTTest_hichain_connector.h @@ -48,7 +48,7 @@ public: MockIHiChainConnectorCallback() = default; virtual ~MockIHiChainConnectorCallback() = default; MOCK_METHOD(void, OnGroupCreated, (int64_t requestId, const std::string &groupId), (override)); - MOCK_METHOD(void, OnMemberJoin, (int64_t requestId, int32_t status), (override)); + MOCK_METHOD(void, OnMemberJoin, (int64_t requestId, int32_t status, int32_t operationCode), (override)); MOCK_METHOD(std::string, GetConnectAddr, (std::string deviceId), (override)); MOCK_METHOD(int32_t, GetPinCode, (std::string &code), (override)); }; -- Gitee From 532784f87d2e0ac3fa4fc59657dab711d2b9e363 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B2=E6=99=93=E6=99=93?= Date: Wed, 13 Aug 2025 11:53:26 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 史晓晓 --- .../implementation/src/authentication/dm_auth_manager.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/implementation/src/authentication/dm_auth_manager.cpp b/services/implementation/src/authentication/dm_auth_manager.cpp index 11169989e..94cd455bb 100644 --- a/services/implementation/src/authentication/dm_auth_manager.cpp +++ b/services/implementation/src/authentication/dm_auth_manager.cpp @@ -579,7 +579,7 @@ void DmAuthManager::OnSessionClosed(const int32_t sessionId) { std::lock_guard lock(groupMutex_); if (authResponseState_->GetStateType() == AUTH_RESPONSE_SHOW && - authResponseContext_->replay == DM_OK && isCreateGroup_ && !isAddMember_) { + authResponseContext_->reply == DM_OK && isCreateGroup_ && !isAddMember_) { LOGI("wait addmemer callback"); return; } @@ -697,7 +697,7 @@ void DmAuthManager::ProcessReqAuthTerminate() { std::lock_guard lock(groupMutex_); if (authResponseState_->GetStateType() == AUTH_RESPONSE_SHOW && - authResponseContext_->replay == DM_OK && isCreateGroup_ && !isAddMember_) { + authResponseContext_->reply == DM_OK && isCreateGroup_ && !isAddMember_) { LOGI("wait addmemer callback"); transiteToFinishState_ = true; return; -- Gitee From 28f84d7481bfc4f2a84eec0f9d5915c4844dee4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=B2=E6=99=93=E6=99=93?= Date: Sat, 16 Aug 2025 18:06:48 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 史晓晓 --- .../include/authentication/dm_auth_manager.h | 2 +- .../src/authentication/dm_auth_manager.cpp | 22 +++++++++---------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/services/implementation/include/authentication/dm_auth_manager.h b/services/implementation/include/authentication/dm_auth_manager.h index 76a2316ad..1d3f72374 100644 --- a/services/implementation/include/authentication/dm_auth_manager.h +++ b/services/implementation/include/authentication/dm_auth_manager.h @@ -650,7 +650,7 @@ private: std::mutex groupMutex_; bool isAddMember_ = false; bool isCreateGroup_ = false; - bool transiteToFinishState_ = false; + bool transitToFinishState_ = false; }; } // namespace DistributedHardware } // namespace OHOS diff --git a/services/implementation/src/authentication/dm_auth_manager.cpp b/services/implementation/src/authentication/dm_auth_manager.cpp index 94cd455bb..307ee014f 100644 --- a/services/implementation/src/authentication/dm_auth_manager.cpp +++ b/services/implementation/src/authentication/dm_auth_manager.cpp @@ -576,15 +576,15 @@ void DmAuthManager::OnSessionOpened(int32_t sessionId, int32_t sessionSide, int3 void DmAuthManager::OnSessionClosed(const int32_t sessionId) { LOGI("DmAuthManager::OnSessionClosed sessionId = %{public}d", sessionId); - { - std::lock_guard lock(groupMutex_); - if (authResponseState_->GetStateType() == AUTH_RESPONSE_SHOW && - authResponseContext_->reply == DM_OK && isCreateGroup_ && !isAddMember_) { - LOGI("wait addmemer callback"); - return; - } - } if (authResponseState_ != nullptr && authResponseContext_ != nullptr) { + { + std::lock_guard lock(groupMutex_); + if (authResponseState_->GetStateType() == AUTH_RESPONSE_SHOW && + authResponseContext_->reply == DM_OK && isCreateGroup_ && !isAddMember_) { + LOGI("wait addmemer callback"); + return; + } + } isFinishOfLocal_ = false; authResponseContext_->state = authResponseState_->GetStateType(); authResponseState_->TransitionTo(std::make_shared()); @@ -699,7 +699,7 @@ void DmAuthManager::ProcessReqAuthTerminate() if (authResponseState_->GetStateType() == AUTH_RESPONSE_SHOW && authResponseContext_->reply == DM_OK && isCreateGroup_ && !isAddMember_) { LOGI("wait addmemer callback"); - transiteToFinishState_ = true; + transitToFinishState_ = true; return; } } @@ -799,7 +799,7 @@ void DmAuthManager::OnMemberJoin(int64_t requestId, int32_t status, int32_t oper { std::lock_guard lock(groupMutex_); isAddMember_ = true; - if (transiteToFinishState_) { + if (transitToFinishState_) { LOGI("Have received src finish state."); authResponseContext_->state = AuthState::AUTH_RESPONSE_FINISH; authResponseState_->TransitionTo(std::make_shared()); @@ -1566,7 +1566,7 @@ void DmAuthManager::ResetParams() bundleName_ = ""; isAddMember_ = false; isCreateGroup_ = false; - transiteToFinishState_ = false; + transitToFinishState_ = false; if (cleanNotifyCallback_ != nullptr) { cleanNotifyCallback_(0); } -- Gitee