diff --git a/frameworks/js/napi/socket/socket_exec/src/socket_exec.cpp b/frameworks/js/napi/socket/socket_exec/src/socket_exec.cpp index 837dabfbd9ba662e62a791e6e761cc82a7cd2ae4..5495960f6ff26b1c71f1a9b7a3d2a365ec233485 100644 --- a/frameworks/js/napi/socket/socket_exec/src/socket_exec.cpp +++ b/frameworks/js/napi/socket/socket_exec/src/socket_exec.cpp @@ -1252,12 +1252,16 @@ bool ExecClose(CloseContext *context) } auto manager = context->GetSharedManager(); - if (manager != nullptr) { - auto inst = manager->GetProxyData(); - if (inst != nullptr) { - inst->Close(); - } + if (manager == nullptr) { + NETSTACK_LOGE("manager is nullptr"); + return false; } + + auto inst = manager->GetProxyData(); + if (inst != nullptr) { + inst->Close(); + } + std::unique_lock lock(manager->GetDataMutex()); if (context->GetSocketFd() < 0) { NETSTACK_LOGE("sock %{public}d is previous closed", context->GetSocketFd());