From 88dd39df520a0acfa38a9930292643689bcbeaf9 Mon Sep 17 00:00:00 2001 From: bigtea Date: Tue, 16 Jul 2024 14:55:57 +0800 Subject: [PATCH] add needSendCloseFrame check Issue: IADBS5 Signed-off-by: bigtea --- websocket/server/websocket_server.cpp | 1 + websocket/websocket_base.cpp | 4 +++- websocket/websocket_base.h | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/websocket/server/websocket_server.cpp b/websocket/server/websocket_server.cpp index 65b49427..79524267 100644 --- a/websocket/server/websocket_server.cpp +++ b/websocket/server/websocket_server.cpp @@ -188,6 +188,7 @@ bool WebSocketServer::InitTcpWebSocket(int port, uint32_t timeoutLimit) return false; } socketState_ = SocketState::INITED; + needSendCloseFrame_ = false; return true; } #else diff --git a/websocket/websocket_base.cpp b/websocket/websocket_base.cpp index 187a8834..9428044e 100644 --- a/websocket/websocket_base.cpp +++ b/websocket/websocket_base.cpp @@ -202,7 +202,9 @@ void WebSocketBase::SendCloseFrame(CloseStatusCode status) void WebSocketBase::CloseConnection(CloseStatusCode status, SocketState newSocketState) { LOGI("Close connection, status = %{public}d", static_cast(status)); - SendCloseFrame(status); + if (needSendCloseFrame_) { + SendCloseFrame(status); + } // can close connection right after sending back close frame. CloseConnectionSocket(ConnectionCloseReason::CLOSE, newSocketState); } diff --git a/websocket/websocket_base.h b/websocket/websocket_base.h index fd750d18..4d409757 100644 --- a/websocket/websocket_base.h +++ b/websocket/websocket_base.h @@ -99,6 +99,9 @@ protected: int connectionFd_ {-1}; + // Used by testframe to skip sendCloseFrame + bool needSendCloseFrame_ {true}; + // Callbacks used during different stages of connection lifecycle. CloseConnectionCallback closeCb_; FailConnectionCallback failCb_; -- Gitee