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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]