| Index: sdk/lib/io/websocket_impl.dart
|
| diff --git a/sdk/lib/io/websocket_impl.dart b/sdk/lib/io/websocket_impl.dart
|
| index 6189c46faaafd568e8e29401ee10704c30c23a7a..2aa894c20a49fe81e10021d198e9f3def6a1a4d2 100644
|
| --- a/sdk/lib/io/websocket_impl.dart
|
| +++ b/sdk/lib/io/websocket_impl.dart
|
| @@ -481,9 +481,11 @@ class _WebSocketTransformerImpl implements WebSocketTransformer {
|
|
|
| response.headers.add("Sec-WebSocket-Extensions", info.headerValue);
|
| var serverNoContextTakeover =
|
| - hv.parameters.containsKey(_serverNoContextTakeover);
|
| + (hv.parameters.containsKey(_serverNoContextTakeover) &&
|
| + compression.serverNoContextTakeover);
|
| var clientNoContextTakeover =
|
| - hv.parameters.containsKey(_clientNoContextTakeover);
|
| + (hv.parameters.containsKey(_clientNoContextTakeover) &&
|
| + compression.clientNoContextTakeover);
|
| var deflate = new _WebSocketPerMessageDeflate(
|
| serverNoContextTakeover: serverNoContextTakeover,
|
| clientNoContextTakeover: clientNoContextTakeover,
|
| @@ -577,6 +579,12 @@ class _WebSocketPerMessageDeflate {
|
| result.addAll(out);
|
| }
|
|
|
| + if ((serverSide && clientNoContextTakeover) ||
|
| + (!serverSide && serverNoContextTakeover)) {
|
| + decoder.end();
|
| + decoder = null;
|
| + }
|
| +
|
| return new Uint8List.fromList(result);
|
| }
|
|
|
| @@ -604,7 +612,8 @@ class _WebSocketPerMessageDeflate {
|
| result.addAll(out);
|
| }
|
|
|
| - if (!serverSide && clientNoContextTakeover) {
|
| + if ((!serverSide && clientNoContextTakeover) ||
|
| + (serverSide && serverNoContextTakeover)) {
|
| encoder.end();
|
| encoder = null;
|
| }
|
|
|