From 5b37589206b5e2224d964de0ee7834c1e67971cb Mon Sep 17 00:00:00 2001 From: t00605578 Date: Tue, 9 Jul 2024 22:04:31 +0800 Subject: [PATCH] fix same account old device start ability Signed-off-by: t00605578 --- bundle.json | 2 +- .../include/distributed_sched_interface.h | 2 +- .../src/continue/dsched_continue_event.cpp | 33 +++++++++++++++---- .../dsched_all_connect_manager.cpp | 6 ++-- .../dsched_transport_softbus_adapter.cpp | 3 +- 5 files changed, 32 insertions(+), 14 deletions(-) diff --git a/bundle.json b/bundle.json index 4e602b69..a21b4d5f 100644 --- a/bundle.json +++ b/bundle.json @@ -19,7 +19,7 @@ ], "adapted_system_type": [ "standard" ], "features" : [ - "dmsfwk_feature_coverage = false", + "dmsfwk_feature_coverage", "dmsfwk_standard_form_share", "dmsfwk_mission_manager", "dmsfwk_report_memmgr", diff --git a/services/dtbschedmgr/include/distributed_sched_interface.h b/services/dtbschedmgr/include/distributed_sched_interface.h index e1bf2bf6..2bf75155 100644 --- a/services/dtbschedmgr/include/distributed_sched_interface.h +++ b/services/dtbschedmgr/include/distributed_sched_interface.h @@ -46,7 +46,7 @@ public: int32_t accountType = DIFF_ACCOUNT_TYPE; std::vector groupIdList; std::string activeAccountId = ""; - int32_t userId = 0; + int32_t userId = -1; }; enum { diff --git a/services/dtbschedmgr/src/continue/dsched_continue_event.cpp b/services/dtbschedmgr/src/continue/dsched_continue_event.cpp index fa24eb3c..4f7b9657 100644 --- a/services/dtbschedmgr/src/continue/dsched_continue_event.cpp +++ b/services/dtbschedmgr/src/continue/dsched_continue_event.cpp @@ -66,6 +66,7 @@ int32_t DSchedContinueCmdBase::Unmarshal(const std::string &jsonStr) { cJSON *rootValue = cJSON_Parse(jsonStr.c_str()); if (rootValue == nullptr) { + HILOGE("Dms continue cmd base json string parse to cjson fail."); return INVALID_PARAMETERS_ERR; } @@ -78,6 +79,7 @@ int32_t DSchedContinueCmdBase::Unmarshal(const std::string &jsonStr) cJSON *item = cJSON_GetObjectItemCaseSensitive(rootValue, numKeys[i]); if (item == nullptr || !cJSON_IsNumber(item)) { cJSON_Delete(rootValue); + HILOGE("Dms continue cmd base %{public}s term is null or not number.", numKeys[i]); return INVALID_PARAMETERS_ERR; } *numValues[i] = item->valueint; @@ -90,6 +92,7 @@ int32_t DSchedContinueCmdBase::Unmarshal(const std::string &jsonStr) cJSON *item = cJSON_GetObjectItemCaseSensitive(rootValue, strKeys[i]); if (item == nullptr || !cJSON_IsString(item) || (item->valuestring == nullptr)) { cJSON_Delete(rootValue); + HILOGE("Dms continue cmd base %{public}s term is null or not string.", strKeys[i]); return INVALID_PARAMETERS_ERR; } *strValues[i] = item->valuestring; @@ -392,23 +395,27 @@ int32_t DSchedContinueDataCmd::UnmarshalParcel(const std::string &jsonStr) { cJSON *rootValue = cJSON_Parse(jsonStr.c_str()); if (rootValue == nullptr) { + HILOGE("Want and AbilityInfo json string parse to cjson fail."); return INVALID_PARAMETERS_ERR; } cJSON *wantStr = cJSON_GetObjectItemCaseSensitive(rootValue, "Want"); if (wantStr == nullptr || !cJSON_IsString(wantStr) || (wantStr->valuestring == nullptr)) { cJSON_Delete(rootValue); + HILOGE("Want term is null or not string."); return INVALID_PARAMETERS_ERR; } Parcel wantParcel; int32_t ret = Base64StrToParcel(wantStr->valuestring, wantParcel); if (ret != ERR_OK) { cJSON_Delete(rootValue); + HILOGE("Want parcel Base64Str unmarshal fail, ret %{public}d.", ret); return INVALID_PARAMETERS_ERR; } auto wantPtr = AAFwk::Want::Unmarshalling(wantParcel); if (wantPtr == nullptr) { cJSON_Delete(rootValue); + HILOGE("AAFwk Want unmarshalling fail, check return null."); return INVALID_PARAMETERS_ERR; } want_ = *wantPtr; @@ -416,17 +423,20 @@ int32_t DSchedContinueDataCmd::UnmarshalParcel(const std::string &jsonStr) cJSON *abilityInfoStr = cJSON_GetObjectItemCaseSensitive(rootValue, "AbilityInfo"); if (abilityInfoStr == nullptr || !cJSON_IsString(abilityInfoStr) || (abilityInfoStr->valuestring == nullptr)) { cJSON_Delete(rootValue); + HILOGE("AbilityInfo term is null or not string."); return INVALID_PARAMETERS_ERR; } Parcel abilityParcel; ret = Base64StrToParcel(abilityInfoStr->valuestring, abilityParcel); if (ret != ERR_OK) { cJSON_Delete(rootValue); + HILOGE("AbilityInfo parcel Base64Str unmarshal fail, ret %{public}d.", ret); return INVALID_PARAMETERS_ERR; } auto abilityInfoPtr = AppExecFwk::CompatibleAbilityInfo::Unmarshalling(abilityParcel); if (abilityInfoPtr == nullptr) { cJSON_Delete(rootValue); + HILOGE("AppExecFwk CompatibleAbilityInfo unmarshalling fail, check return null."); return INVALID_PARAMETERS_ERR; } abilityInfo_ = *abilityInfoPtr; @@ -439,6 +449,7 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfo(std::string &jsonStr) { cJSON *rootValue = cJSON_Parse(jsonStr.c_str()); if (rootValue == nullptr) { + HILOGE("Caller info json string parse to cjson fail."); return INVALID_PARAMETERS_ERR; } @@ -453,6 +464,7 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfo(std::string &jsonStr) cJSON *item = cJSON_GetObjectItemCaseSensitive(rootValue, strKeys[i]); if (item == nullptr || !cJSON_IsString(item) || (item->valuestring == nullptr)) { cJSON_Delete(rootValue); + HILOGE("Caller info json %{public}s term is null or not string.", strKeys[i]); return INVALID_PARAMETERS_ERR; } *strValues[i] = item->valuestring; @@ -469,6 +481,7 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfo(std::string &jsonStr) cJSON *item = cJSON_GetObjectItemCaseSensitive(rootValue, numKeys[i]); if (item == nullptr || !cJSON_IsNumber(item)) { cJSON_Delete(rootValue); + HILOGE("Caller info json %{public}s term is null or not number.", numKeys[i]); return INVALID_PARAMETERS_ERR; } *numValues[i] = item->valueint; @@ -476,6 +489,7 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfo(std::string &jsonStr) if (UnmarshalCallerInfoExtra(jsonStr) != ERR_OK) { cJSON_Delete(rootValue); + HILOGE("Unmarshal CallerInfoExtra term from caller info json string fail."); return INVALID_PARAMETERS_ERR; } @@ -487,6 +501,7 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfoExtra(std::string &jsonStr) { cJSON *rootValue = cJSON_Parse(jsonStr.c_str()); if (rootValue == nullptr) { + HILOGE("Caller info extra json string parse to cjson fail."); return INVALID_PARAMETERS_ERR; } @@ -496,6 +511,7 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfoExtra(std::string &jsonStr) cJSON_ArrayForEach(bundleName, bundleNames) { if (bundleName == nullptr || !cJSON_IsString(bundleName) || (bundleName->valuestring == nullptr)) { cJSON_Delete(rootValue); + HILOGE("BundleNames term in CallerInfoExtra json is null or not string."); return INVALID_PARAMETERS_ERR; } bundleNameList.push_back(bundleName->valuestring); @@ -505,11 +521,13 @@ int32_t DSchedContinueDataCmd::UnmarshalCallerInfoExtra(std::string &jsonStr) cJSON *extraInfo = cJSON_GetObjectItemCaseSensitive(rootValue, "ExtraInfo"); if (extraInfo == nullptr || !cJSON_IsString(extraInfo) || (extraInfo->valuestring == nullptr)) { cJSON_Delete(rootValue); + HILOGE("ExtraInfo term in CallerInfoExtra json is null or not string."); return INVALID_PARAMETERS_ERR; } cJSON *extraInfoValue = cJSON_Parse(extraInfo->valuestring); if (extraInfoValue == nullptr) { cJSON_Delete(rootValue); + HILOGE("ExtraInfo term json string parse to cjson fail in CallerInfoExtra json."); return INVALID_PARAMETERS_ERR; } @@ -531,12 +549,14 @@ int32_t DSchedContinueDataCmd::UnmarshalAccountInfo(std::string &jsonStr) { cJSON *rootValue = cJSON_Parse(jsonStr.c_str()); if (rootValue == nullptr) { + HILOGE("Account info json string parse to cjson fail."); return INVALID_PARAMETERS_ERR; } cJSON *accountType = cJSON_GetObjectItemCaseSensitive(rootValue, "AccountType"); if (accountType == nullptr || !cJSON_IsNumber(accountType)) { cJSON_Delete(rootValue); + HILOGE("AccountType term in account info json is null or not number."); return INVALID_PARAMETERS_ERR; } accountInfo_.accountType = accountType->valueint; @@ -547,6 +567,7 @@ int32_t DSchedContinueDataCmd::UnmarshalAccountInfo(std::string &jsonStr) cJSON_ArrayForEach(groupId, groupIdListStr) { if (groupId == nullptr || !cJSON_IsString(groupId) || (groupId->valuestring == nullptr)) { cJSON_Delete(rootValue); + HILOGE("groupId term in account info json is null or not string."); return INVALID_PARAMETERS_ERR; } groupIdList.push_back(groupId->valuestring); @@ -555,16 +576,16 @@ int32_t DSchedContinueDataCmd::UnmarshalAccountInfo(std::string &jsonStr) cJSON *accountId = cJSON_GetObjectItemCaseSensitive(rootValue, Constants::EXTRO_INFO_JSON_KEY_ACCOUNT_ID.c_str()); if (accountId == nullptr || !cJSON_IsString(accountId)) { - cJSON_Delete(rootValue); - return INVALID_PARAMETERS_ERR; + HILOGE("accountId term in account info json is null or not string."); + } else { + accountInfo_.activeAccountId = accountId->valuestring; } - accountInfo_.activeAccountId = accountId->valuestring; cJSON *userId = cJSON_GetObjectItemCaseSensitive(rootValue, Constants::EXTRO_INFO_JSON_KEY_USERID_ID.c_str()); if (userId == nullptr || !cJSON_IsNumber(userId)) { - cJSON_Delete(rootValue); - return INVALID_PARAMETERS_ERR; + HILOGE("userId term in account info json is null or not number."); + } else { + accountInfo_.userId = userId->valueint; } - accountInfo_.userId = userId->valueint; cJSON_Delete(rootValue); return ERR_OK; diff --git a/services/dtbschedmgr/src/softbus_adapter/allconnectmgr/dsched_all_connect_manager.cpp b/services/dtbschedmgr/src/softbus_adapter/allconnectmgr/dsched_all_connect_manager.cpp index 807ddd53..6f703b1c 100644 --- a/services/dtbschedmgr/src/softbus_adapter/allconnectmgr/dsched_all_connect_manager.cpp +++ b/services/dtbschedmgr/src/softbus_adapter/allconnectmgr/dsched_all_connect_manager.cpp @@ -93,7 +93,7 @@ int32_t DSchedAllConnectManager::GetServiceCollaborationManagerProxy() std::string resolvedPath = "/system/lib/libcfwk_allconnect_client.z.so"; #endif char path[PATH_MAX + 1] = {0}; - if (resolvedPath.empty() || resolvedPath.length() > PATH_MAX || realpath(resolvedPath.c_str(), path) == nullptr) { + if (resolvedPath.length() > PATH_MAX || realpath(resolvedPath.c_str(), path) == nullptr) { HILOGE("Check all connect so real path failed, resolvedPath [%{public}s].", resolvedPath.c_str()); return INVALID_PARAMETERS_ERR; } @@ -116,14 +116,12 @@ int32_t DSchedAllConnectManager::GetServiceCollaborationManagerProxy() break; } - int32_t ret = ServiceCollaborationManagerExport(&allConnectMgrApi_); + ret = ServiceCollaborationManagerExport(&allConnectMgrApi_); if (ret != ERR_OK) { HILOGE("Init remote dms interactive adapter proxy fail, ret %{public}d.", ret); - ret = INVALID_PARAMETERS_ERR; break; } HILOGI("Init remote dms interactive adapter proxy success."); - ret = ERR_OK; } while (false); if (ret != ERR_OK) { diff --git a/services/dtbschedmgr/src/softbus_adapter/transport/dsched_transport_softbus_adapter.cpp b/services/dtbschedmgr/src/softbus_adapter/transport/dsched_transport_softbus_adapter.cpp index 5a7824d3..4306726f 100644 --- a/services/dtbschedmgr/src/softbus_adapter/transport/dsched_transport_softbus_adapter.cpp +++ b/services/dtbschedmgr/src/softbus_adapter/transport/dsched_transport_softbus_adapter.cpp @@ -295,14 +295,13 @@ void DSchedTransportSoftbusAdapter::OnBind(int32_t sessionId, const std::string void DSchedTransportSoftbusAdapter::OnShutdown(int32_t sessionId, bool isSelfcalled) { - std::string peerDeviceId; { std::lock_guard sessionLock(sessionMutex_); if (sessions_.empty() || sessions_.count(sessionId) == 0 || sessions_[sessionId] == nullptr) { HILOGE("error, invalid sessionId %{public}d", sessionId); return; } - peerDeviceId = sessions_[sessionId]->GetPeerDeviceId(); + std::string peerDeviceId = sessions_[sessionId]->GetPeerDeviceId(); HILOGI("peerDeviceId: %{public}s shutdown, socket sessionId: %{public}d.", GetAnonymStr(peerDeviceId).c_str(), sessionId); ShutdownSession(peerDeviceId, sessionId);