Skip to content

Commit

Permalink
fix adding Vary when value stored as array
Browse files Browse the repository at this point in the history
  • Loading branch information
dougwilson committed Jun 3, 2014
1 parent 38d0bda commit 7c97aa7
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 6 deletions.
1 change: 1 addition & 0 deletions HISTORY.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
unreleased
==========

* fix adding `Vary` when value stored as array
* fix back-pressure behavior
* fix length check for `res.end`

Expand Down
33 changes: 27 additions & 6 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,12 +115,7 @@ module.exports = function compression(options) {
if (!filter(req, res)) return;

// vary
var vary = res.getHeader('Vary');
if (!vary) {
res.setHeader('Vary', 'Accept-Encoding');
} else if (!~vary.indexOf('Accept-Encoding')) {
res.setHeader('Vary', vary + ', Accept-Encoding');
}
vary(res, 'Accept-Encoding')

if (!compress) return;

Expand Down Expand Up @@ -172,3 +167,29 @@ module.exports = function compression(options) {
};

function noop(){}

/**
* Add val to Vary header
*/

function vary(res, val) {
var header = res.getHeader('Vary') || ''
var headers = Array.isArray(header)
? header.join(', ')
: header

// enumerate current values
var vals = headers.toLowerCase().split(/ *, */)

if (vals.indexOf(val.toLowerCase()) !== -1) {
// already set
return
}

// append value (in existing format)
header = headers
? headers + ', ' + val
: val

res.setHeader('Vary', header)
}

0 comments on commit 7c97aa7

Please sign in to comment.