This is an automated email from the ASF dual-hosted git repository. markt pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/main by this push: new 9f53a40a30 Further BZ 66508 fix 9f53a40a30 is described below commit 9f53a40a308fb8c07cb875a605ab92ab5701a4a2 Author: Mark Thomas <ma...@apache.org> AuthorDate: Wed Apr 12 13:25:00 2023 +0100 Further BZ 66508 fix Don't close connection before close message has been sent to client. --- java/org/apache/tomcat/websocket/WsSession.java | 5 +++++ .../apache/tomcat/websocket/server/WsHttpUpgradeHandler.java | 11 ++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/java/org/apache/tomcat/websocket/WsSession.java b/java/org/apache/tomcat/websocket/WsSession.java index 5f947afde7..45703457f5 100644 --- a/java/org/apache/tomcat/websocket/WsSession.java +++ b/java/org/apache/tomcat/websocket/WsSession.java @@ -462,6 +462,11 @@ public class WsSession implements Session { } + public boolean isClosed() { + return state == State.CLOSED; + } + + @Override public long getMaxIdleTimeout() { checkState(); diff --git a/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java b/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java index 7f37101e71..93a717f988 100644 --- a/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java +++ b/java/org/apache/tomcat/websocket/server/WsHttpUpgradeHandler.java @@ -186,10 +186,15 @@ public class WsHttpUpgradeHandler implements InternalHttpUpgradeHandler { return SocketState.CLOSED; } - if (wsFrame.isOpen()) { - return SocketState.UPGRADED; - } else { + + /* + * If a CLOSE frame has been received then wsFrame will be closed but need to keep the connection open until the + * CLOSE frame has been sent. Hence use the wsSession.isClosed() rather than wsFrame.isOpen() here. + */ + if (wsSession.isClosed()) { return SocketState.CLOSED; + } else { + return SocketState.UPGRADED; } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org