This is an automated email from the ASF dual-hosted git repository.

markt pushed a commit to branch 10.1.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/10.1.x by this push:
     new 1786df8027 Correct a regression in the fix for BZ 66508
1786df8027 is described below

commit 1786df8027770e9376909abf037a8d39bc5bcbf2
Author: Mark Thomas <ma...@apache.org>
AuthorDate: Thu Jan 18 18:43:07 2024 +0000

    Correct a regression in the fix for BZ 66508
    
    It could could cause an UpgradeProcessor leak in some circumstances
    https://bz.apache.org/bugzilla/show_bug.cgi?id=66508
---
 .../tomcat/websocket/server/WsRemoteEndpointImplServer.java      | 9 +++++++--
 webapps/docs/changelog.xml                                       | 8 ++++++++
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git 
a/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java 
b/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
index 57fcc97d56..d0cfef46ac 100644
--- a/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
+++ b/java/org/apache/tomcat/websocket/server/WsRemoteEndpointImplServer.java
@@ -103,8 +103,13 @@ public class WsRemoteEndpointImplServer extends 
WsRemoteEndpointImplBase {
     protected boolean acquireMessagePartInProgressSemaphore(byte opCode, long 
timeoutExpiry)
             throws InterruptedException {
 
-        // Only close requires special handling.
-        if (opCode != Constants.OPCODE_CLOSE) {
+        /*
+         * Special handling is required only when all of the following are 
true:
+         * - A close message is being sent
+         * - This thread currently holds the socketWrapper lock (i.e. the 
thread is current processing a socket event)
+         */
+        if (!(opCode == Constants.OPCODE_CLOSE && 
socketWrapper.getLock().isHeldByCurrentThread())) {
+            // Skip special handling
             return super.acquireMessagePartInProgressSemaphore(opCode, 
timeoutExpiry);
         }
 
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index 52b5650875..687590df61 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -128,6 +128,14 @@
       </fix>
     </changelog>
   </subsection>
+  <subsection name="WebSocket">
+    <changelog>
+      <fix>
+        Correct a regression in the fix for <bug>66508</bug> that could cause 
an
+        <code>UpgradeProcessor</code> leak in some circumstances. (markt)
+      </fix>
+    </changelog>
+  </subsection>
 </section>
 <section name="Tomcat 10.1.18 (schultz)" rtext="2024-01-09">
   <subsection name="Catalina">


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to