You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2016/03/18 12:27:35 UTC

svn commit: r1735579 - in /tomcat/tc8.5.x/trunk: ./ java/org/apache/tomcat/websocket/ webapps/docs/

Author: markt
Date: Fri Mar 18 11:27:35 2016
New Revision: 1735579

URL: http://svn.apache.org/viewvc?rev=1735579&view=rev
Log:
Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=59189
Explicitly release the native memory held by the Inflater and Deflater when using PerMessageDeflate and the WebSocket session ends.
Based on a patch by Henrik Olsson.

Modified:
    tomcat/tc8.5.x/trunk/   (props changed)
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/PerMessageDeflate.java
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/Transformation.java
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java
    tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
    tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc8.5.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Mar 18 11:27:35 2016
@@ -1 +1 @@
-/tomcat/trunk:1734785,1734799,1734845,1734928,1735041,1735044,1735480
+/tomcat/trunk:1734785,1734799,1734845,1734928,1735041,1735044,1735480,1735577

Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/PerMessageDeflate.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/PerMessageDeflate.java?rev=1735579&r1=1735578&r2=1735579&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/PerMessageDeflate.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/PerMessageDeflate.java Fri Mar 18 11:27:35 2016
@@ -460,4 +460,13 @@ public class PerMessageDeflate implement
         }
         return result;
     }
+
+
+    @Override
+    public void close() {
+        // There will always be a next transformation
+        next.close();
+        inflater.end();
+        deflater.end();
+    }
 }

Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/Transformation.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/Transformation.java?rev=1735579&r1=1735578&r2=1735579&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/Transformation.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/Transformation.java Fri Mar 18 11:27:35 2016
@@ -103,4 +103,9 @@ public interface Transformation {
      *          may be bigger or smaller than the size of the input list
      */
     List<MessagePart> sendMessagePart(List<MessagePart> messageParts);
+
+    /**
+     * Clean-up any resources that were used by the transformation.
+     */
+    void close();
 }

Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java?rev=1735579&r1=1735578&r2=1735579&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java Fri Mar 18 11:27:35 2016
@@ -737,6 +737,11 @@ public abstract class WsFrameBase {
         public boolean validateRsv(int rsv, byte opCode) {
             return rsv == 0;
         }
+
+        @Override
+        public void close() {
+            // NO-OP for the terminal transformations
+        }
     }
 
 

Modified: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java?rev=1735579&r1=1735578&r2=1735579&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java (original)
+++ tomcat/tc8.5.x/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java Fri Mar 18 11:27:35 2016
@@ -704,6 +704,9 @@ public abstract class WsRemoteEndpointIm
         for (EncoderEntry entry : encoderEntries) {
             entry.getEncoder().destroy();
         }
+        // The transformation handles both input and output. It only needs to be
+        // closed once so it is closed here on the output side.
+        transformation.close();
         doClose();
     }
 

Modified: tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml?rev=1735579&r1=1735578&r2=1735579&view=diff
==============================================================================
--- tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml Fri Mar 18 11:27:35 2016
@@ -44,7 +44,19 @@
   They eventually become mixed with the numbered issues. (I.e., numbered
   issues do not "pop up" wrt. others).
 -->
-<section name="Tomcat 8.5.0" rext="In development">
+<section name="Tomcat 8.5.1" rtext="In development">
+  <subsection name="WebSocket">
+    <changelog>
+      <fix>
+        <bug>59189</bug>: Explicitly release the native memory held by the
+        <code>Inflater</code> and <code>Deflater</code> when using
+        PerMessageDeflate and the WebSocket session ends. Based on a patch by
+        Henrik Olsson. (markt)
+      </fix>
+    </changelog>
+  </subsection>
+</section>
+<section name="Tomcat 8.5.0" rtext="Release in progress">
   <subsection name="Other">
     <changelog>
       <add>



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