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