diff --git a/services/backup_sa/src/module_ipc/service.cpp b/services/backup_sa/src/module_ipc/service.cpp index 9b77fdf772a1f0a8a85156d5bb7b8f526ef58a23..fec0577964d693e7e93c31fc113d8a94b6622ed6 100644 --- a/services/backup_sa/src/module_ipc/service.cpp +++ b/services/backup_sa/src/module_ipc/service.cpp @@ -143,6 +143,7 @@ string Service::VerifyCallerAndGetCallerName() session_->VerifyBundleName(hapTokenInfo.bundleName); return hapTokenInfo.bundleName; } else { + HILOGE("tokenID = %{private}d", tokenCaller); throw BError(BError::Codes::SA_INVAL_ARG, string("Invalid token type ").append(to_string(tokenType))); } } @@ -238,6 +239,7 @@ ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, session_->SetSessionUserId(userId); } VerifyCaller(IServiceReverse::Scenario::RESTORE); + auto restoreInfos = BundleMgrAdapter::GetBundleInfos(bundleNames, session_->GetSessionUserId()); BJsonCachedEntity cachedEntity(move(fd)); auto cache = cachedEntity.Structuralize(); auto bundleInfos = cache.GetBundleInfos(); @@ -256,6 +258,13 @@ ErrCode Service::AppendBundlesRestoreSession(UniqueFd fd, session_->SetBundleVersionName(bundleInfo.name, bundleInfo.versionName); } } + for (auto info : restoreInfos) { + if (info.allToBackup == false) { + session_->GetServiceReverseProxy()->RestoreOnBundleStarted(BError(BError::Codes::SA_REFUSED_ACT), + info.name); + session_->RemoveExtInfo(info.name); + } + } Start(); Finish(); OnStartSched(); @@ -266,7 +275,14 @@ ErrCode Service::AppendBundlesBackupSession(const vector &bundleName { HILOGI("Begin"); VerifyCaller(IServiceReverse::Scenario::BACKUP); + auto backupInfos = BundleMgrAdapter::GetBundleInfos(bundleNames, session_->GetSessionUserId()); session_->AppendBundles(bundleNames); + for (auto info : backupInfos) { + if (info.allToBackup == false) { + session_->GetServiceReverseProxy()->BackupOnBundleStarted(BError(BError::Codes::SA_REFUSED_ACT), info.name); + session_->RemoveExtInfo(info.name); + } + } Start(); Finish(); OnStartSched(); diff --git a/services/backup_sa/src/module_ipc/svc_session_manager.cpp b/services/backup_sa/src/module_ipc/svc_session_manager.cpp index 9b5f1abf6485400fca9376fb0b226af214d16b4b..b962f71f7f4d7407211e1a8c0eaae7bda4d1723a 100644 --- a/services/backup_sa/src/module_ipc/svc_session_manager.cpp +++ b/services/backup_sa/src/module_ipc/svc_session_manager.cpp @@ -197,7 +197,9 @@ void SvcSessionManager::RemoveExtInfo(const string &bundleName) return; } impl_.backupExtNameMap.erase(it); - extConnectNum_--; + if (extConnectNum_) { + extConnectNum_--; + } } wptr SvcSessionManager::GetExtConnection(const BundleName &bundleName)