From 25aa61104ae0154a225c4461f3370522f9f0be28 Mon Sep 17 00:00:00 2001 From: zhuchaochao Date: Thu, 11 Jan 2024 08:15:47 +0000 Subject: [PATCH] fix ipc limit bug Signed-off-by: zhuchaochao Change-Id: I9ff5e56992e708b3487f6792fb60a3d0a6fbdc28 --- frameworks/js/napi/session/src/napi_avsession.cpp | 10 ++++------ services/session/ipc/proxy/avsession_proxy.cpp | 5 +++-- services/session/ipc/proxy/avsession_proxy.h | 1 + 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frameworks/js/napi/session/src/napi_avsession.cpp b/frameworks/js/napi/session/src/napi_avsession.cpp index 531aa4a9..16927145 100755 --- a/frameworks/js/napi/session/src/napi_avsession.cpp +++ b/frameworks/js/napi/session/src/napi_avsession.cpp @@ -498,9 +498,7 @@ napi_value NapiAVSession::SetAVPlaybackState(napi_env env, napi_callback_info in napi_value NapiAVSession::SetAVQueueItems(napi_env env, napi_callback_info info) { AVSESSION_TRACE_SYNC_START("NapiAVSession::SetAVQueueItems"); - struct ConcreteContext : public ContextBase { - std::vector items_; - }; + struct ConcreteContext : public ContextBase { std::vector items_; }; auto context = std::make_shared(); if (context == nullptr) { NapiUtils::ThrowError(env, "SetAVQueueItems failed : no memory", @@ -536,6 +534,8 @@ napi_value NapiAVSession::SetAVQueueItems(napi_env env, napi_callback_info info) context->errMessage = "SetAVQueueItems failed : native invalid parameters"; } else if (ret == ERR_NO_PERMISSION) { context->errMessage = "SetAVQueueItems failed : native no permission"; + } else if (ret == ERR_MARSHALLING) { + context->errMessage = "SetAVQueueItems failed : item number is out of range"; } else { context->errMessage = "SetAVQueueItems failed : native server exception"; } @@ -543,9 +543,7 @@ napi_value NapiAVSession::SetAVQueueItems(napi_env env, napi_callback_info info) context->errCode = NapiAVSessionManager::errcode_[ret]; } }; - auto complete = [env](napi_value& output) { - output = NapiUtils::GetUndefinedValue(env); - }; + auto complete = [env](napi_value& output) { output = NapiUtils::GetUndefinedValue(env); }; return NapiAsyncWork::Enqueue(env, context, "SetAVQueueItems", executor, complete); } diff --git a/services/session/ipc/proxy/avsession_proxy.cpp b/services/session/ipc/proxy/avsession_proxy.cpp index 9b93da2e..7e6a2358 100644 --- a/services/session/ipc/proxy/avsession_proxy.cpp +++ b/services/session/ipc/proxy/avsession_proxy.cpp @@ -286,11 +286,12 @@ int32_t AVSessionProxy::SetAVQueueItems(const std::vector& items) AVSESSION_TRACE_SYNC_START("AVSessionProxy::SetAVQueueItems"); CHECK_AND_RETURN_RET_LOG(!isDestroyed_, ERR_SESSION_NOT_EXIST, "session is destroyed"); MessageParcel data; + data.SetMaxCapacity(DEFAULT_IPC_CAPACITY); CHECK_AND_RETURN_RET_LOG(data.WriteInterfaceToken(GetDescriptor()), ERR_MARSHALLING, "write interface token failed"); - CHECK_AND_RETURN_RET_LOG(data.WriteInt32(items.size()), ERR_UNMARSHALLING, "write items num int32 failed"); + CHECK_AND_RETURN_RET_LOG(data.WriteInt32(items.size()), ERR_MARSHALLING, "write items num int32 failed"); for (auto &parcelable : items) { - CHECK_AND_RETURN_RET_LOG(data.WriteParcelable(&parcelable), ERR_UNMARSHALLING, "Write items failed"); + CHECK_AND_RETURN_RET_LOG(data.WriteParcelable(&parcelable), ERR_MARSHALLING, "Write items failed"); } MessageParcel reply; MessageOption option; diff --git a/services/session/ipc/proxy/avsession_proxy.h b/services/session/ipc/proxy/avsession_proxy.h index 4657f65f..d705184f 100644 --- a/services/session/ipc/proxy/avsession_proxy.h +++ b/services/session/ipc/proxy/avsession_proxy.h @@ -105,6 +105,7 @@ private: static inline BrokerDelegator delegator_; bool isDestroyed_ = {}; std::shared_ptr controller_; + const size_t DEFAULT_IPC_CAPACITY = 1048576; // Increase the IPC default capacity(200K) to 1M #ifdef CASTPLUS_CAST_ENGINE_ENABLE std::shared_ptr castController_; -- Gitee