Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(619)

Unified Diff: sdk/lib/io/websocket_impl.dart

Issue 1579343003: Resolve issues with websocket compression. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698