diff --git a/tooling/client/tcpServer/tcp_server.cpp b/tooling/client/tcpServer/tcp_server.cpp index b908322961175099f1a2b9df70c1014c2a405bba..f65bff535888f8013ed88644526de724bd374bc3 100644 --- a/tooling/client/tcpServer/tcp_server.cpp +++ b/tooling/client/tcpServer/tcp_server.cpp @@ -14,9 +14,12 @@ */ #include "tooling/client/tcpServer/tcp_server.h" +#include "ecmascript/platform/file.h" #include "tooling/utils/utils.h" namespace OHOS::ArkCompiler::Toolchain { +using fd_t = panda::ecmascript::fd_t; + uv_async_t* g_inputSignal; uv_async_t* g_releaseHandle; std::string g_inputStr = ""; @@ -62,9 +65,7 @@ void TcpServer::ServerConnect() CloseServer(); return; } -#if defined(PANDA_TARGET_OHOS) - fdsan_exchange_owner_tag(lfd, 0, LOG_DOMAIN); -#endif + panda::ecmascript::FdsanExchangeOwnerTag(reinterpret_cast(lfd)); int ret = bind(lfd, (struct sockaddr*)&saddr, sizeof(saddr)); if (ret == -1) { @@ -88,9 +89,7 @@ void TcpServer::ServerConnect() CloseServer(); return; } -#if defined(PANDA_TARGET_OHOS) - fdsan_exchange_owner_tag(cfd, 0, LOG_DOMAIN); -#endif + panda::ecmascript::FdsanExchangeOwnerTag(reinterpret_cast(cfd)); } void TcpServer::SendCommand(std::string inputStr) @@ -143,13 +142,8 @@ void TcpServer::StartTcpServer([[maybe_unused]] void* arg) } } while (num > 0); -#if defined(PANDA_TARGET_OHOS) - fdsan_close_with_tag(cfd, LOG_DOMAIN); - fdsan_close_with_tag(lfd, LOG_DOMAIN); -#else - close(cfd); - close(lfd); -#endif + panda::ecmascript::Close(reinterpret_cast(cfd)); + panda::ecmascript::Close(reinterpret_cast(lfd)); CloseServer(); return; diff --git a/websocket/BUILD.gn b/websocket/BUILD.gn index e18278fd9be2f9f44a654852a7ed51613fb26a40..3da4024c1399df911177f387f06988a672cb2929 100644 --- a/websocket/BUILD.gn +++ b/websocket/BUILD.gn @@ -49,6 +49,7 @@ ohos_source_set("websocket_base") { configs = websocket_configs external_deps = websocket_ext_deps + external_deps += [ "ets_runtime:libark_jsruntime" ] deps = websocket_deps if (target_os == "android" && !ark_standalone_build) { @@ -79,6 +80,7 @@ ohos_source_set("websocket_server") { public_configs = [ ":websocket_public_config" ] external_deps = websocket_ext_deps + external_deps += [ "ets_runtime:libark_jsruntime" ] deps = websocket_deps deps += [ ":websocket_base" ] diff --git a/websocket/server/websocket_server.cpp b/websocket/server/websocket_server.cpp index 48bc97ac6db5ea3bb8fb4ecb5ce8bfbd96d36dcf..c4708a0a2d5d3105ccac56a56a3ef40279e55899 100644 --- a/websocket/server/websocket_server.cpp +++ b/websocket/server/websocket_server.cpp @@ -21,6 +21,7 @@ #include #include "common/log_wrapper.h" +#include "ecmascript/platform/file.h" #include "frame_builder.h" #include "handshake_helper.h" #include "server/websocket_server.h" @@ -30,6 +31,8 @@ #include namespace OHOS::ArkCompiler::Toolchain { +using fd_t = panda::ecmascript::fd_t; + static bool ValidateHandShakeMessage(const HttpRequest& req) { std::string upgradeHeaderValue = req.upgrade; @@ -44,11 +47,7 @@ WebSocketServer::~WebSocketServer() noexcept { if (serverFd_ != -1) { LOGW("WebSocket server is closed while destructing the object"); -#if defined(PANDA_TARGET_OHOS) - fdsan_close_with_tag(serverFd_, LOG_DOMAIN); -#else - close(serverFd_); -#endif + panda::ecmascript::Close(reinterpret_cast(serverFd_)); // Reset directly in order to prevent static analyzer warnings. serverFd_ = -1; } @@ -239,9 +238,7 @@ bool WebSocketServer::InitTcpWebSocket(int port, uint32_t timeoutLimit) LOGE("InitTcpWebSocket socket init failed, errno = %{public}d", errno); return false; } -#if defined(PANDA_TARGET_OHOS) - fdsan_exchange_owner_tag(serverFd_, 0, LOG_DOMAIN); -#endif + panda::ecmascript::FdsanExchangeOwnerTag(reinterpret_cast(serverFd_)); // allow specified port can be used at once and not wait TIME_WAIT status ending int sockOptVal = 1; if ((setsockopt(serverFd_, SOL_SOCKET, SO_REUSEADDR, @@ -289,9 +286,7 @@ bool WebSocketServer::InitUnixWebSocket(const std::string& sockName, uint32_t ti LOGE("InitUnixWebSocket socket init failed, errno = %{public}d", errno); return false; } -#if defined(PANDA_TARGET_OHOS) - fdsan_exchange_owner_tag(serverFd_, 0, LOG_DOMAIN); -#endif + panda::ecmascript::FdsanExchangeOwnerTag(reinterpret_cast(serverFd_)); // set send and recv timeout if (!SetWebSocketTimeOut(serverFd_, timeoutLimit)) { LOGE("InitUnixWebSocket SetWebSocketTimeOut failed"); @@ -373,11 +368,7 @@ bool WebSocketServer::ConnectUnixWebSocketBySocketpair() void WebSocketServer::CloseServerSocket() { -#if defined(PANDA_TARGET_OHOS) - fdsan_close_with_tag(serverFd_, LOG_DOMAIN); -#else - close(serverFd_); -#endif + panda::ecmascript::Close(reinterpret_cast(serverFd_)); serverFd_ = -1; } diff --git a/websocket/websocket_base.cpp b/websocket/websocket_base.cpp index 90cb0a5816fe18a2cc5c6470c6bdb440b8653f97..0c34f4a231864df789fa10ea202cf18ac0895348 100644 --- a/websocket/websocket_base.cpp +++ b/websocket/websocket_base.cpp @@ -15,6 +15,7 @@ #include "common/log_wrapper.h" #include "define.h" +#include "ecmascript/platform/file.h" #include "frame_builder.h" #include "network.h" #include "websocket_base.h" @@ -22,6 +23,8 @@ #include namespace OHOS::ArkCompiler::Toolchain { +using fd_t = panda::ecmascript::fd_t; + static std::string ToString(CloseStatusCode status) { if (status == CloseStatusCode::NO_STATUS_CODE) { @@ -36,11 +39,7 @@ WebSocketBase::~WebSocketBase() noexcept { if (connectionFd_ != -1) { LOGW("WebSocket connection is closed while destructing the object"); -#if defined(PANDA_TARGET_OHOS) - fdsan_close_with_tag(connectionFd_, LOG_DOMAIN); -#else - close(connectionFd_); -#endif + panda::ecmascript::Close(reinterpret_cast(connectionFd_)); // Reset directly in order to prevent static analyzer warnings. connectionFd_ = -1; } @@ -212,11 +211,7 @@ void WebSocketBase::CloseConnectionSocket(ConnectionCloseReason status) // Note that `close` must be also done in critical section, // otherwise the other thread can continue using the outdated and possibly reassigned file descriptor. std::unique_lock lock(connectionMutex_); -#if defined(PANDA_TARGET_OHOS) - fdsan_close_with_tag(connectionFd_, LOG_DOMAIN); -#else - close(connectionFd_); -#endif + panda::ecmascript::Close(reinterpret_cast(connectionFd_)); // Reset directly in order to prevent static analyzer warnings. connectionFd_ = -1; } @@ -265,9 +260,7 @@ int WebSocketBase::GetConnectionSocket() const void WebSocketBase::SetConnectionSocket(int socketFd) { -#if defined(PANDA_TARGET_OHOS) - fdsan_exchange_owner_tag(socketFd, 0, LOG_DOMAIN); -#endif + panda::ecmascript::FdsanExchangeOwnerTag(reinterpret_cast(socketFd)); connectionFd_ = socketFd; }