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

Unified Diff: net/websockets/websocket_deflater.cc

Issue 2691623002: Update zlib to 1.2.11 (Closed)
Patch Set: Fix WebSockets, see https://crbug.com/691074 Created 3 years, 10 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 | net/websockets/websocket_inflater.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/websockets/websocket_deflater.cc
diff --git a/net/websockets/websocket_deflater.cc b/net/websockets/websocket_deflater.cc
index 9144c0116dc1ab7a13084c45c2ad5534069df4ae..71e95c27fa28810f96d275c68be41a8c98e95ce8 100644
--- a/net/websockets/websocket_deflater.cc
+++ b/net/websockets/websocket_deflater.cc
@@ -31,11 +31,19 @@ bool WebSocketDeflater::Initialize(int window_bits) {
DCHECK_LE(8, window_bits);
DCHECK_GE(15, window_bits);
+
+ // Use a negative value to compress a raw deflate stream. Upgrade window_bits
+ // = 8 (a 256-byte window) to 9 (a 512-byte window) because zlib is unable to
+ // compress using a 256-byte window. This retains zlib's historical behavior
+ // of silently increasing the window size in this case. See
+ // https://crbug.com/691074.
+ window_bits = -std::max(window_bits, 9);
+
memset(stream_.get(), 0, sizeof(*stream_));
int result = deflateInit2(stream_.get(),
Z_DEFAULT_COMPRESSION,
Z_DEFLATED,
- -window_bits, // Negative value for raw deflate
+ window_bits,
8, // default mem level
Z_DEFAULT_STRATEGY);
if (result != Z_OK) {
« no previous file with comments | « no previous file | net/websockets/websocket_inflater.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698