permessage-deflate
Advanced tools
Comparing version 0.1.3 to 0.1.4
@@ -0,1 +1,6 @@ | ||
### 0.1.4 / 2015-11-06 | ||
* The server does not send `server_max_window_bits` if the client does not ask | ||
for it; this works around an issue in Firefox. | ||
### 0.1.3 / 2015-04-10 | ||
@@ -2,0 +7,0 @@ |
@@ -67,8 +67,8 @@ 'use strict'; | ||
this._ownWindowBits = Math.min( | ||
this._acceptMaxWindowBits || common.DEFAULT_MAX_WINDOW_BITS, | ||
params.client_max_window_bits || common.DEFAULT_MAX_WINDOW_BITS | ||
this._acceptMaxWindowBits || common.MAX_WINDOW_BITS, | ||
params.client_max_window_bits || common.MAX_WINDOW_BITS | ||
); | ||
this._peerContextTakeover = !params.server_no_context_takeover; | ||
this._peerWindowBits = params.server_max_window_bits || common.DEFAULT_MAX_WINDOW_BITS; | ||
this._peerWindowBits = params.server_max_window_bits || common.MAX_WINDOW_BITS; | ||
@@ -75,0 +75,0 @@ return true; |
@@ -11,3 +11,3 @@ 'use strict'; | ||
DEFAULT_MAX_WINDOW_BITS: 15, | ||
MAX_WINDOW_BITS: 15, | ||
VALID_WINDOW_BITS: [8, 9, 10, 11, 12, 13, 14, 15], | ||
@@ -14,0 +14,0 @@ |
@@ -24,40 +24,44 @@ 'use strict'; | ||
ServerSession.prototype.generateResponse = function() { | ||
var params = {}; | ||
var response = {}; | ||
// https://tools.ietf.org/html/draft-ietf-hybi-permessage-compression#section-8.1.1.1 | ||
if (this._acceptNoContextTakeover || this._params.server_no_context_takeover) | ||
params.server_no_context_takeover = true; | ||
this._ownContextTakeover = !this._acceptNoContextTakeover && | ||
!this._params.server_no_context_takeover; | ||
if (!this._ownContextTakeover) response.server_no_context_takeover = true; | ||
// https://tools.ietf.org/html/draft-ietf-hybi-permessage-compression#section-8.1.1.2 | ||
if (this._requestNoContextTakeover || this._params.client_no_context_takeover) | ||
params.client_no_context_takeover = true; | ||
this._peerContextTakeover = !this._requestNoContextTakeover && | ||
!this._params.client_no_context_takeover; | ||
if (!this._peerContextTakeover) response.client_no_context_takeover = true; | ||
// https://tools.ietf.org/html/draft-ietf-hybi-permessage-compression#section-8.1.2.1 | ||
var acceptMax, serverMax; | ||
if (this._acceptMaxWindowBits || this._params.server_max_window_bits) { | ||
acceptMax = this._acceptMaxWindowBits || common.DEFAULT_MAX_WINDOW_BITS; | ||
serverMax = this._params.server_max_window_bits || common.DEFAULT_MAX_WINDOW_BITS; | ||
params.server_max_window_bits = Math.min(acceptMax, serverMax); | ||
} | ||
this._ownWindowBits = Math.min(this._acceptMaxWindowBits || common.MAX_WINDOW_BITS, | ||
this._params.server_max_window_bits || common.MAX_WINDOW_BITS); | ||
// In violation of the spec, Firefox closes the connection if it does not | ||
// send server_max_window_bits but the server includes this in its response | ||
if (this._ownWindowBits < common.MAX_WINDOW_BITS && this._params.server_max_window_bits) | ||
response.server_max_window_bits = this._ownWindowBits; | ||
// https://tools.ietf.org/html/draft-ietf-hybi-permessage-compression#section-8.1.2.2 | ||
var clientMax = this._params.client_max_window_bits, requestMax; | ||
if (clientMax) { | ||
if (clientMax === true) { | ||
if (this._requestMaxWindowBits) params.client_max_window_bits = this._requestMaxWindowBits; | ||
} else { | ||
requestMax = this._requestMaxWindowBits || common.DEFAULT_MAX_WINDOW_BITS; | ||
params.client_max_window_bits = Math.min(requestMax, clientMax); | ||
} | ||
if (clientMax === true) clientMax = common.MAX_WINDOW_BITS; | ||
this._peerWindowBits = Math.min(this._requestMaxWindowBits || common.MAX_WINDOW_BITS, clientMax); | ||
} else { | ||
this._peerWindowBits = common.MAX_WINDOW_BITS; | ||
} | ||
this._ownContextTakeover = !params.server_no_context_takeover; | ||
this._ownWindowBits = params.server_max_window_bits || common.DEFAULT_MAX_WINDOW_BITS; | ||
if (this._peerWindowBits < common.MAX_WINDOW_BITS) | ||
response.client_max_window_bits = this._peerWindowBits; | ||
this._peerContextTakeover = !params.client_no_context_takeover; | ||
this._peerWindowBits = params.client_max_window_bits || common.DEFAULT_MAX_WINDOW_BITS; | ||
return params; | ||
return response; | ||
}; | ||
module.exports = ServerSession; |
@@ -8,3 +8,3 @@ { "name" : "permessage-deflate" | ||
, "version" : "0.1.3" | ||
, "version" : "0.1.4" | ||
, "engines" : {"node": ">=0.6.0"} | ||
@@ -11,0 +11,0 @@ , "main" : "./lib/permessage_deflate" |
17096
317