Index: sdk/lib/io/websocket_impl.dart |
diff --git a/sdk/lib/io/websocket_impl.dart b/sdk/lib/io/websocket_impl.dart |
index 879d05e6c7835f9e23784455eef031919188a1ea..297c25b31aece2954ee78c0f6cc14e5bf315f8e1 100644 |
--- a/sdk/lib/io/websocket_impl.dart |
+++ b/sdk/lib/io/websocket_impl.dart |
@@ -133,13 +133,16 @@ class _WebSocketProtocolTransformer implements StreamTransformer, EventSink { |
throw new WebSocketException("Protocol error"); |
} |
- if ((byte & RSV1) != 0) { |
- _compressed = true; |
- } else { |
- _compressed = false; |
- } |
_opcode = (byte & OPCODE); |
+ if (_opcode != _WebSocketOpcode.CONTINUATION) { |
+ if ((byte & RSV1) != 0) { |
+ _compressed = true; |
+ } else { |
+ _compressed = false; |
+ } |
+ } |
+ |
if (_opcode <= _WebSocketOpcode.BINARY) { |
if (_opcode == _WebSocketOpcode.CONTINUATION) { |
if (_currentMessageType == _WebSocketMessageType.NONE) { |
@@ -567,28 +570,18 @@ class _WebSocketPerMessageDeflate { |
data.addAll(const [0x00, 0x00, 0xff, 0xff]); |
decoder.process(data, 0, data.length); |
- var reuse = |
- !(serverSide ? clientNoContextTakeover : serverNoContextTakeover); |
var result = []; |
var out; |
- while ((out = decoder.processed(flush: reuse)) != null) { |
+ while ((out = decoder.processed()) != null) { |
result.addAll(out); |
} |
- decoder.processed(flush: reuse); |
- |
- if (!reuse) { |
- decoder.end(); |
- decoder = null; |
- } |
return new Uint8List.fromList(result); |
} |
List<int> processOutgoingMessage(List<int> msg) { |
_ensureEncoder(); |
- var reuse = |
- !(serverSide ? serverNoContextTakeover : clientNoContextTakeover); |
var result = []; |
Uint8List buffer; |
var out; |
@@ -607,15 +600,10 @@ class _WebSocketPerMessageDeflate { |
encoder.process(buffer, 0, buffer.length); |
- while ((out = encoder.processed(flush: reuse)) != null) { |
+ while ((out = encoder.processed()) != null) { |
result.addAll(out); |
} |
- if (serverSide ? serverNoContextTakeover : clientNoContextTakeover) { |
- encoder.end(); |
- encoder = null; |
- } |
- |
if (result.length > 4) { |
result = result.sublist(0, result.length - 4); |
} |