From 53c32045bde3348e124bdf0e7d4c71cebb84e99c 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:18:41 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=AF=B9=E7=AB=AFkill=E6=80=BB=E7=BA=BF?= =?UTF-8?q?=E8=A7=A6=E5=8F=91=E4=B8=8A=E7=BA=BF=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 史晓晓 --- .../dependency/softbus/softbus_connector.h | 5 +++-- .../authentication_v2/auth_stages/auth_acl.cpp | 16 ++++++++++++---- .../src/dependency/softbus/softbus_connector.cpp | 9 +++++---- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/services/implementation/include/dependency/softbus/softbus_connector.h b/services/implementation/include/dependency/softbus/softbus_connector.h index be6e0468b..3f3a10294 100644 --- a/services/implementation/include/dependency/softbus/softbus_connector.h +++ b/services/implementation/include/dependency/softbus/softbus_connector.h @@ -86,12 +86,13 @@ public: * @tc.desc: join lnn by session id * @tc.type: FUNC */ - static void JoinLnnByHml(int32_t sessionId, int32_t sessionKeyId, int32_t remoteSessionKeyId); + static void JoinLnnByHml(int32_t sessionId, int32_t sessionKeyId, int32_t remoteSessionKeyId, + bool isForceJoin = false); static void JoinLnn(const std::string &deviceId, const std::string &remoteUdidHash); static void JoinLNNBySkId(int32_t sessionId, int32_t sessionKeyId, int32_t remoteSessionKeyId, - std::string udid, std::string udidHash); + std::string udid, std::string udidHash, bool isForceJoin = false); /** * @tc.name: SoftbusConnector::RegisterConnectorCallback diff --git a/services/implementation/src/authentication_v2/auth_stages/auth_acl.cpp b/services/implementation/src/authentication_v2/auth_stages/auth_acl.cpp index ca8c677f5..b601100f1 100644 --- a/services/implementation/src/authentication_v2/auth_stages/auth_acl.cpp +++ b/services/implementation/src/authentication_v2/auth_stages/auth_acl.cpp @@ -179,9 +179,13 @@ int32_t AuthSrcDataSyncState::Action(std::shared_ptr context) bool isNeedJoinLnn = context->softbusConnector->CheckIsNeedJoinLnn(peerDeviceId, context->accessee.addr); // Trigger networking if ((!context->accesser.isOnline || isNeedJoinLnn) && context->isNeedJoinLnn) { + bool isForceJoin = false; + if (!context->accesser.isOnline) { + isForceJoin = true; + } if (context->connSessionType == CONN_SESSION_TYPE_HML) { context->softbusConnector->JoinLnnByHml(context->sessionId, context->accesser.transmitSessionKeyId, - context->accessee.transmitSessionKeyId); + context->accessee.transmitSessionKeyId, isForceJoin); } else { char udidHashTmp[DM_MAX_DEVICE_ID_LEN] = {0}; if (Crypto::GetUdidHash(context->accessee.deviceId, reinterpret_cast(udidHashTmp)) != DM_OK) { @@ -191,7 +195,7 @@ int32_t AuthSrcDataSyncState::Action(std::shared_ptr context) } std::string peerUdidHash = std::string(udidHashTmp); context->softbusConnector->JoinLNNBySkId(context->sessionId, context->accesser.transmitSessionKeyId, - context->accessee.transmitSessionKeyId, context->accessee.addr, peerUdidHash); + context->accessee.transmitSessionKeyId, context->accessee.addr, peerUdidHash, isForceJoin); } } context->reason = DM_OK; @@ -260,9 +264,13 @@ int32_t AuthSrcFinishState::Action(std::shared_ptr context) bool isNeedJoinLnn = context->softbusConnector->CheckIsNeedJoinLnn(peerDeviceId, context->accessee.addr); // Trigger networking if (context->reason == DM_BIND_TRUST_TARGET && (!context->accesser.isOnline || isNeedJoinLnn)) { + bool isForceJoin = false; + if (!context->accesser.isOnline) { + isForceJoin = true; + } if (context->connSessionType == CONN_SESSION_TYPE_HML) { context->softbusConnector->JoinLnnByHml(context->sessionId, context->accesser.transmitSessionKeyId, - context->accessee.transmitSessionKeyId); + context->accessee.transmitSessionKeyId, isForceJoin); } else { char udidHashTmp[DM_MAX_DEVICE_ID_LEN] = {0}; if (Crypto::GetUdidHash(context->accessee.deviceId, reinterpret_cast(udidHashTmp)) != DM_OK) { @@ -272,7 +280,7 @@ int32_t AuthSrcFinishState::Action(std::shared_ptr context) } std::string peerUdidHash = std::string(udidHashTmp); context->softbusConnector->JoinLNNBySkId(context->sessionId, context->accesser.transmitSessionKeyId, - context->accessee.transmitSessionKeyId, context->accessee.addr, peerUdidHash); + context->accessee.transmitSessionKeyId, context->accessee.addr, peerUdidHash, isForceJoin); } } LOGI("AuthSrcFinishState::Action ok"); diff --git a/services/implementation/src/dependency/softbus/softbus_connector.cpp b/services/implementation/src/dependency/softbus/softbus_connector.cpp index 90606a916..ea2ddcb5c 100644 --- a/services/implementation/src/dependency/softbus/softbus_connector.cpp +++ b/services/implementation/src/dependency/softbus/softbus_connector.cpp @@ -318,7 +318,7 @@ void SoftbusConnector::JoinLnn(const std::string &deviceId, const std::string &r } void SoftbusConnector::JoinLNNBySkId(int32_t sessionId, int32_t sessionKeyId, int32_t remoteSessionKeyId, - std::string udid, std::string udidHash) + std::string udid, std::string udidHash, bool isForceJoin) { LOGI("start, JoinLNNBySkId sessionId: %{public}d, udid: %{public}s.", sessionId, GetAnonyString(udid).c_str()); std::string connectAddr; @@ -346,13 +346,14 @@ void SoftbusConnector::JoinLNNBySkId(int32_t sessionId, int32_t sessionKeyId, in addrInfo->deviceKeyId.localDeviceKeyId = 0; // 总线修改后适配 addrInfo->deviceKeyId.remoteDeviceKeyId = 0; // 总线修改后适配 } - int32_t ret = ::JoinLNN(DM_PKG_NAME, addrInfo.get(), OnSoftbusJoinLNNResult, false); + int32_t ret = ::JoinLNN(DM_PKG_NAME, addrInfo.get(), OnSoftbusJoinLNNResult, isForceJoin); if (ret != DM_OK) { LOGE("[SOFTBUS]JoinLNNBySkId failed, ret: %{public}d.", ret); } } -void SoftbusConnector::JoinLnnByHml(int32_t sessionId, int32_t sessionKeyId, int32_t remoteSessionKeyId) +void SoftbusConnector::JoinLnnByHml(int32_t sessionId, int32_t sessionKeyId, int32_t remoteSessionKeyId, + bool isForceJoin) { LOGI("start, JoinLnnByHml sessionId: %{public}d.", sessionId); ConnectionAddr addrInfo; @@ -367,7 +368,7 @@ void SoftbusConnector::JoinLnnByHml(int32_t sessionId, int32_t sessionKeyId, int addrInfo.deviceKeyId.localDeviceKeyId = 0; addrInfo.deviceKeyId.remoteDeviceKeyId = 0; } - int32_t ret = ::JoinLNN(DM_PKG_NAME, &addrInfo, OnSoftbusJoinLNNResult, false); + int32_t ret = ::JoinLNN(DM_PKG_NAME, &addrInfo, OnSoftbusJoinLNNResult, isForceJoin); if (ret != DM_OK) { LOGE("[SOFTBUS]JoinLNN failed, ret: %{public}d.", ret); } -- Gitee From 48fad5151f0d83b51c8213d3735e0c55601baf32 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 16:23:51 +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: 史晓晓 --- .../include/authentication_v2/dm_auth_state.h | 1 + .../auth_stages/auth_acl.cpp | 38 +------------------ .../src/authentication_v2/dm_auth_state.cpp | 21 ++++++++++ 3 files changed, 24 insertions(+), 36 deletions(-) diff --git a/services/implementation/include/authentication_v2/dm_auth_state.h b/services/implementation/include/authentication_v2/dm_auth_state.h index 0eae06814..f1857b8f1 100644 --- a/services/implementation/include/authentication_v2/dm_auth_state.h +++ b/services/implementation/include/authentication_v2/dm_auth_state.h @@ -176,6 +176,7 @@ public: static void DeleteAclAndSk(std::shared_ptr context, const DistributedDeviceProfile::AccessControlProfile &profile); void GetPeerDeviceId(std::shared_ptr context, std::string &peerDeviceId); + void JoinLnn(std::shared_ptr context); protected: bool NeedReqUserConfirm(std::shared_ptr context); bool NeedAgreeAcl(std::shared_ptr context); diff --git a/services/implementation/src/authentication_v2/auth_stages/auth_acl.cpp b/services/implementation/src/authentication_v2/auth_stages/auth_acl.cpp index b601100f1..d6d13bfc9 100644 --- a/services/implementation/src/authentication_v2/auth_stages/auth_acl.cpp +++ b/services/implementation/src/authentication_v2/auth_stages/auth_acl.cpp @@ -179,24 +179,7 @@ int32_t AuthSrcDataSyncState::Action(std::shared_ptr context) bool isNeedJoinLnn = context->softbusConnector->CheckIsNeedJoinLnn(peerDeviceId, context->accessee.addr); // Trigger networking if ((!context->accesser.isOnline || isNeedJoinLnn) && context->isNeedJoinLnn) { - bool isForceJoin = false; - if (!context->accesser.isOnline) { - isForceJoin = true; - } - if (context->connSessionType == CONN_SESSION_TYPE_HML) { - context->softbusConnector->JoinLnnByHml(context->sessionId, context->accesser.transmitSessionKeyId, - context->accessee.transmitSessionKeyId, isForceJoin); - } else { - char udidHashTmp[DM_MAX_DEVICE_ID_LEN] = {0}; - if (Crypto::GetUdidHash(context->accessee.deviceId, reinterpret_cast(udidHashTmp)) != DM_OK) { - LOGE("AuthSrcDataSyncState joinLnn get udidhash by udid: %{public}s failed", - GetAnonyString(context->accessee.deviceId).c_str()); - return ERR_DM_FAILED; - } - std::string peerUdidHash = std::string(udidHashTmp); - context->softbusConnector->JoinLNNBySkId(context->sessionId, context->accesser.transmitSessionKeyId, - context->accessee.transmitSessionKeyId, context->accessee.addr, peerUdidHash, isForceJoin); - } + JoinLnn(context); } context->reason = DM_OK; context->reply = DM_OK; @@ -264,24 +247,7 @@ int32_t AuthSrcFinishState::Action(std::shared_ptr context) bool isNeedJoinLnn = context->softbusConnector->CheckIsNeedJoinLnn(peerDeviceId, context->accessee.addr); // Trigger networking if (context->reason == DM_BIND_TRUST_TARGET && (!context->accesser.isOnline || isNeedJoinLnn)) { - bool isForceJoin = false; - if (!context->accesser.isOnline) { - isForceJoin = true; - } - if (context->connSessionType == CONN_SESSION_TYPE_HML) { - context->softbusConnector->JoinLnnByHml(context->sessionId, context->accesser.transmitSessionKeyId, - context->accessee.transmitSessionKeyId, isForceJoin); - } else { - char udidHashTmp[DM_MAX_DEVICE_ID_LEN] = {0}; - if (Crypto::GetUdidHash(context->accessee.deviceId, reinterpret_cast(udidHashTmp)) != DM_OK) { - LOGE("AuthSrcDataSyncState joinLnn get udidhash by udid: %{public}s failed", - GetAnonyString(context->accessee.deviceId).c_str()); - return ERR_DM_FAILED; - } - std::string peerUdidHash = std::string(udidHashTmp); - context->softbusConnector->JoinLNNBySkId(context->sessionId, context->accesser.transmitSessionKeyId, - context->accessee.transmitSessionKeyId, context->accessee.addr, peerUdidHash, isForceJoin); - } + JoinLnn(context); } LOGI("AuthSrcFinishState::Action ok"); std::shared_ptr tempContext = context; diff --git a/services/implementation/src/authentication_v2/dm_auth_state.cpp b/services/implementation/src/authentication_v2/dm_auth_state.cpp index c51087201..d72738fb0 100644 --- a/services/implementation/src/authentication_v2/dm_auth_state.cpp +++ b/services/implementation/src/authentication_v2/dm_auth_state.cpp @@ -971,5 +971,26 @@ void DmAuthState::RemoveTokenIdsFromCredential(std::shared_ptr co } context->hiChainAuthConnector->UpdateCredential(credId, access.userId, appList); } + +void DmAuthState::JoinLnn(std::shared_ptr context) +{ + CHECK_NULL_VOID(context); + CHECK_NULL_VOID(context->softbusConnector); + bool isForceJoin = false; + if (!context->accesser.isOnline) { + isForceJoin = true; + } + if (context->connSessionType == CONN_SESSION_TYPE_HML) { + context->softbusConnector->JoinLnnByHml(context->sessionId, context->accesser.transmitSessionKeyId, + context->accessee.transmitSessionKeyId, isForceJoin); + } else { + char udidHashTmp[DM_MAX_DEVICE_ID_LEN] = {0}; + if (Crypto::GetUdidHash(context->accessee.deviceId, reinterpret_cast(udidHashTmp)) == DM_OK) { + std::string peerUdidHash = std::string(udidHashTmp); + context->softbusConnector->JoinLNNBySkId(context->sessionId, context->accesser.transmitSessionKeyId, + context->accessee.transmitSessionKeyId, context->accessee.addr, peerUdidHash, isForceJoin); + } + } +} } // namespace DistributedHardware } // namespace OHOS -- Gitee From 0d0c230c76c318967892842f2aae831531b706cd 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 17:21:06 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=97=A5=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 史晓晓 --- services/implementation/src/authentication_v2/dm_auth_state.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/services/implementation/src/authentication_v2/dm_auth_state.cpp b/services/implementation/src/authentication_v2/dm_auth_state.cpp index d72738fb0..a8da66832 100644 --- a/services/implementation/src/authentication_v2/dm_auth_state.cpp +++ b/services/implementation/src/authentication_v2/dm_auth_state.cpp @@ -978,6 +978,7 @@ void DmAuthState::JoinLnn(std::shared_ptr context) CHECK_NULL_VOID(context->softbusConnector); bool isForceJoin = false; if (!context->accesser.isOnline) { + LOGI("The remote device is offline."); isForceJoin = true; } if (context->connSessionType == CONN_SESSION_TYPE_HML) { -- Gitee