diff options
author | Joakim Erdfelt | 2016-01-15 23:26:02 +0000 |
---|---|---|
committer | Joakim Erdfelt | 2016-01-15 23:26:02 +0000 |
commit | 68089535612fa44c1a6a3da1ed18bcbc608e7f1d (patch) | |
tree | 0ae68680194d988fbebc8d8522b9f595979245d3 | |
parent | 9f8df9a1a84433cdaf4b52471210f63d6e005f2d (diff) | |
download | org.eclipse.jetty.project-68089535612fa44c1a6a3da1ed18bcbc608e7f1d.tar.gz org.eclipse.jetty.project-68089535612fa44c1a6a3da1ed18bcbc608e7f1d.tar.xz org.eclipse.jetty.project-68089535612fa44c1a6a3da1ed18bcbc608e7f1d.zip |
485469 - permessage-deflate extension causes protocol error in Firefox/Chrome
+ Correcting behavior for RFC7692: Section 7.2.3.6 (permessage-deflate
empty fin)
2 files changed, 7 insertions, 5 deletions
diff --git a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/CompressExtension.java b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/CompressExtension.java index 6fc9b538fc..ac32ad6d72 100644 --- a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/CompressExtension.java +++ b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/CompressExtension.java @@ -407,12 +407,13 @@ public abstract class CompressExtension extends AbstractExtension { Frame frame = entry.frame; BatchMode batchMode = entry.batchMode; - if (OpCode.isControlFrame(frame.getOpCode()) || !frame.hasPayload()) + if (OpCode.isControlFrame(frame.getOpCode())) { + // Do not deflate control frames nextOutgoingFrame(frame,this,batchMode); return; } - + compress(entry,true); } @@ -434,7 +435,7 @@ public abstract class CompressExtension extends AbstractExtension // no input supplied needsCompress = false; } - + ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] output = new byte[outputLength]; @@ -486,7 +487,8 @@ public abstract class CompressExtension extends AbstractExtension } else if (fin) { - // Special case: 8.2.3.6. Generating an Empty Fragment Manually + // Special case: 7.2.3.6. Generating an Empty Fragment Manually + // https://tools.ietf.org/html/rfc7692#section-7.2.3.6 payload = ByteBuffer.wrap(new byte[] { 0x00 }); } diff --git a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/PerMessageDeflateExtension.java b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/PerMessageDeflateExtension.java index c307e5356b..93ea4fbcbf 100644 --- a/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/PerMessageDeflateExtension.java +++ b/jetty-websocket/websocket-common/src/main/java/org/eclipse/jetty/websocket/common/extensions/compress/PerMessageDeflateExtension.java @@ -33,7 +33,7 @@ import org.eclipse.jetty.websocket.common.OpCode; /** * Per Message Deflate Compression extension for WebSocket. * <p> - * Attempts to follow <a href="https://tools.ietf.org/html/draft-ietf-hybi-permessage-compression-12">draft-ietf-hybi-permessage-compression-12</a> + * Attempts to follow <a href="https://tools.ietf.org/html/rfc7692">Compression Extensions for WebSocket</a> */ public class PerMessageDeflateExtension extends CompressExtension { |