You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by vi...@apache.org on 2014/09/17 14:44:10 UTC
svn commit: r1625562 - in /tomcat/tc7.0.x/trunk: ./
java/org/apache/tomcat/websocket/PerMessageDeflate.java
Author: violetagg
Date: Wed Sep 17 12:44:09 2014
New Revision: 1625562
URL: http://svn.apache.org/r1625562
Log:
Merged revision 1619742 from tomcat/trunk:
WebSocket permessage-deflate. Implement no_context_takeover parameters.
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/PerMessageDeflate.java
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1619742
Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/PerMessageDeflate.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/PerMessageDeflate.java?rev=1625562&r1=1625561&r2=1625562&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/PerMessageDeflate.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/websocket/PerMessageDeflate.java Wed Sep 17 12:44:09 2014
@@ -55,7 +55,6 @@ public class PerMessageDeflate implement
private volatile Transformation next;
private volatile boolean skipDecompression = false;
private volatile ByteBuffer writeBuffer = ByteBuffer.allocate(Constants.DEFAULT_BUFFER_SIZE);
- private volatile boolean deflaterResetRequired = true;
private volatile boolean firstCompressedFrameWritten = false;
private volatile byte[] EOM_BUFFER = new byte[EOM_BYTES.length + 1];
@@ -212,6 +211,9 @@ public class PerMessageDeflate implement
}
}
} else if (written == 0) {
+ if (fin && !serverContextTakeover) {
+ inflater.reset();
+ }
return TransformationResult.END_OF_FRAME;
}
}
@@ -310,13 +312,6 @@ public class PerMessageDeflate implement
SendHandler uncompressedIntermediateHandler =
uncompressedPart.getIntermediateHandler();
- // Need to reset the deflater at the start of every message
- if (deflaterResetRequired) {
- deflater.reset();
- deflaterResetRequired = false;
- firstCompressedFrameWritten = false;
- }
-
deflater.setInput(uncompressedPayload.array(),
uncompressedPayload.arrayOffset() + uncompressedPayload.position(),
uncompressedPayload.remaining());
@@ -359,8 +354,8 @@ public class PerMessageDeflate implement
compressedPart = new MessagePart(true, getRsv(uncompressedPart),
opCode, compressedPayload, uncompressedIntermediateHandler,
uncompressedIntermediateHandler);
- deflaterResetRequired = true;
deflateRequired = false;
+ startNewMessage();
} else if (full && !needsInput) {
// Write buffer full and input message not fully read.
// Output and start new compressed part.
@@ -389,8 +384,8 @@ public class PerMessageDeflate implement
compressedPart = new MessagePart(true,
getRsv(uncompressedPart), opCode, compressedPayload,
uncompressedIntermediateHandler, uncompressedIntermediateHandler);
- deflaterResetRequired = true;
deflateRequired = false;
+ startNewMessage();
} else {
// More data to write
// Copy bytes to new write buffer
@@ -426,6 +421,13 @@ public class PerMessageDeflate implement
}
+ private void startNewMessage() {
+ firstCompressedFrameWritten = false;
+ if (!clientContextTakeover) {
+ deflater.reset();
+ }
+ }
+
private int getRsv(MessagePart uncompressedMessagePart) {
int result = uncompressedMessagePart.getRsv();
if (!firstCompressedFrameWritten) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org