diff --git a/uhdf2/ipc/include/hdf_remote_adapter.h b/uhdf2/ipc/include/hdf_remote_adapter.h index e5153dc7fa8c4c30ada27fc03e8ebe143c5f98cc..44dfce49d4bca98b0e6b3c7a96b6b6000c7a32b5 100644 --- a/uhdf2/ipc/include/hdf_remote_adapter.h +++ b/uhdf2/ipc/include/hdf_remote_adapter.h @@ -56,6 +56,7 @@ struct HdfRemoteServiceHolder { struct HdfRemoteService service_; OHOS::sptr remote_; OHOS::sptr deathRecipient_; + std::u16string descriptor_; }; struct HdfRemoteService *HdfRemoteAdapterBind(OHOS::sptr binder); diff --git a/uhdf2/ipc/src/hdf_remote_adapter.cpp b/uhdf2/ipc/src/hdf_remote_adapter.cpp index 0d0600e184289c4f125e7c1c2d11ac247daf847c..75448ec6a0204c12f8eee4fcca9364528315cf70 100644 --- a/uhdf2/ipc/src/hdf_remote_adapter.cpp +++ b/uhdf2/ipc/src/hdf_remote_adapter.cpp @@ -133,7 +133,7 @@ HdfRemoteServiceHolder::HdfRemoteServiceHolder() : remote_(nullptr), deathRecipi bool HdfRemoteServiceHolder::SetInterfaceDescriptor(const char *desc) { - if (remote_ == nullptr || desc == nullptr) { + if (desc == nullptr) { return false; } std::u16string newDesc = OHOS::Str8ToStr16(std::string(desc)); @@ -141,10 +141,8 @@ bool HdfRemoteServiceHolder::SetInterfaceDescriptor(const char *desc) HDF_LOGE("failed to set interface des, error on cover str8 to str16, %{public}s", desc); return false; } - static std::mutex descMutex; - std::lock_guard lock(descMutex); - (const_cast(&remote_->descriptor_))->assign(newDesc); + descriptor_.assign(newDesc); return true; } @@ -335,11 +333,11 @@ bool HdfRemoteAdapterWriteInterfaceToken(struct HdfRemoteService *service, struc HDF_LOGE("failed to write interface token, holder->remote is nullptr"); return false; } - if (holder->remote_->GetObjectDescriptor().empty()) { + if (holder->descriptor_.empty()) { HDF_LOGE("failed to write interface token, empty token"); return false; } - return parcel->WriteInterfaceToken(holder->remote_->GetObjectDescriptor()); + return parcel->WriteInterfaceToken(holder->descriptor_); } bool HdfRemoteAdapterCheckInterfaceToken(struct HdfRemoteService *service, struct HdfSBuf *data) @@ -361,9 +359,8 @@ bool HdfRemoteAdapterCheckInterfaceToken(struct HdfRemoteService *service, struc HDF_LOGE("failed to check interface, empty token"); return false; } - if (holder->remote_->GetObjectDescriptor() != desc) { - std::string descStr8 = OHOS::Str16ToStr8(desc); - HDF_LOGE("calling unknown interface: %{public}s", descStr8.c_str()); + if (holder->descriptor_ != desc) { + HDF_LOGE("calling unknown interface: %{public}s", OHOS::Str16ToStr8(desc).c_str()); return false; }