This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 9.0.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/9.0.x by this push:
new efbddee98c Further BZ 66508 fix
efbddee98c is described below
commit efbddee98cc8128d5dcf108edfb57013a931d87d
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 845330a4e5..70b9cedcf4 100644
--- a/java/org/apache/tomcat/websocket/WsSession.java
+++ b/java/org/apache/tomcat/websocket/WsSession.java
@@ -545,6 +545,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 29bccf163a..9aeee27c30 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]