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 192fdea101737372fcd7e6078089fd1d7543d6b6..676db10d57a2c76503146f8e37a714a7d840ae68 100644 --- a/frameworks/js/napi/socket/socket_exec/src/socket_exec.cpp +++ b/frameworks/js/napi/socket/socket_exec/src/socket_exec.cpp @@ -1186,6 +1186,11 @@ bool ExecClose(CloseContext *context) } } + std::lock_guard lock(g_fdMutex); + if (context->>GetSocketFd() < 0) { + NETSTACK_LOGE("sock %{public}d is previous closed", context->GetSocketFd()); + return false; + } int ret = close(context->GetSocketFd()); if (ret < 0) { NETSTACK_LOGE("sock closed failed , socket is %{public}d, errno is %{public}d", context->GetSocketFd(), errno); diff --git a/frameworks/js/napi/tls/src/tlssocket_exec.cpp b/frameworks/js/napi/tls/src/tlssocket_exec.cpp index 18dafde2f7766ae9bcf0635c564259009e200911..41ea131a3032b6a858f152ab24e5dd68b4c736de 100644 --- a/frameworks/js/napi/tls/src/tlssocket_exec.cpp +++ b/frameworks/js/napi/tls/src/tlssocket_exec.cpp @@ -355,6 +355,7 @@ bool TLSSocketExec::ExecSend(TLSSendContext *context) NETSTACK_LOGE("manager is nullptr"); return false; } + std::lock_guard lock(manager->GetDataMutex()); auto tlsSocket = reinterpret_cast *>(manager->GetData()); if (tlsSocket == nullptr) { NETSTACK_LOGE("ExecSend tlsSocket is null");