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

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

Issue 1437623002: Ensure proper response to chrome client_max_window_bits (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Add window resize test Created 5 years, 1 month 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 | « sdk/lib/io/websocket.dart ('k') | tests/standalone/io/web_socket_compression_test.dart » ('j') | 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 bcb800d84aa80e8f4ca0d812f641b231012f9336..879d05e6c7835f9e23784455eef031919188a1ea 100644
--- a/sdk/lib/io/websocket_impl.dart
+++ b/sdk/lib/io/websocket_impl.dart
@@ -37,6 +37,18 @@ class _WebSocketOpcode {
}
/**
+ * Stores the header and integer value derived from negotiation of
+ * client_max_window_bits and server_max_window_bits. headerValue will be
+ * set in the Websocket response headers.
+ */
+class _CompressionMaxWindowBits {
+ String headerValue;
+ int maxWindowBits;
+ _CompressionMaxWindowBits([this.headerValue, this.maxWindowBits]);
+ String toString() => headerValue;
+}
+
+/**
* The web socket protocol transformer handles the protocol byte stream
* which is supplied through the [:handleData:]. As the protocol is processed,
* it'll output frame data as either a List<int> or String.
@@ -458,15 +470,13 @@ class _WebSocketTransformerImpl implements WebSocketTransformer {
HttpResponse response, CompressionOptions compression) {
var extensionHeader = request.headers.value("Sec-WebSocket-Extensions");
- if (extensionHeader == null) {
- extensionHeader = "";
- }
+ extensionHeader ??= "";
var hv = HeaderValue.parse(extensionHeader, valueSeparator: ',');
if (compression.enabled && hv.value == _WebSocketImpl.PER_MESSAGE_DEFLATE) {
var info = compression._createHeader(hv);
- response.headers.add("Sec-WebSocket-Extensions", info[0]);
+ response.headers.add("Sec-WebSocket-Extensions", info.headerValue);
var serverNoContextTakeover =
hv.parameters.containsKey(_serverNoContextTakeover);
var clientNoContextTakeover =
@@ -474,8 +484,8 @@ class _WebSocketTransformerImpl implements WebSocketTransformer {
var deflate = new _WebSocketPerMessageDeflate(
serverNoContextTakeover: serverNoContextTakeover,
clientNoContextTakeover: clientNoContextTakeover,
- serverMaxWindowBits: info[1],
- clientMaxWindowBits: info[1],
+ serverMaxWindowBits: info.maxWindowBits,
+ clientMaxWindowBits: info.maxWindowBits,
serverSide: true);
return deflate;
« no previous file with comments | « sdk/lib/io/websocket.dart ('k') | tests/standalone/io/web_socket_compression_test.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698