Skip to content

Commit 3e2c2d4

Browse files
committed
✨ ignore falsy header keys, matching node behavior
1 parent 172eb41 commit 3e2c2d4

File tree

2 files changed

+44
-3
lines changed

2 files changed

+44
-3
lines changed

index.js

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,10 +79,15 @@ function onHeaders (res, listener) {
7979
*/
8080

8181
function setHeadersFromArray (res, headers) {
82+
var key
83+
8284
if (headers.length && Array.isArray(headers[0])) {
8385
// 2D
8486
for (var i = 0; i < headers.length; i++) {
85-
res.setHeader(headers[i][0], headers[i][1])
87+
key = headers[i][0]
88+
if (key) {
89+
res.setHeader(key, headers[i][1])
90+
}
8691
}
8792
} else {
8893
// 1D
@@ -96,11 +101,17 @@ function setHeadersFromArray (res, headers) {
96101
}
97102

98103
for (var k = 0; k < headers.length; k += 2) {
99-
res.appendHeader(headers[k], headers[k + 1])
104+
key = headers[k]
105+
if (key) {
106+
res.appendHeader(key, headers[k + 1])
107+
}
100108
}
101109
} else {
102110
for (var l = 0; l < headers.length; l += 2) {
103-
res.setHeader(headers[l], headers[l + 1])
111+
key = headers[l]
112+
if (key) {
113+
res.setHeader(key, headers[l + 1])
114+
}
104115
}
105116
}
106117
}

test/test.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,21 @@ describe('onHeaders(res, listener)', function () {
280280
.expect('X-Outgoing-Echo', 'test')
281281
.expect(201, done)
282282
})
283+
284+
it('should ignore empty header key', function (done) {
285+
var server = createServer(listener, handler)
286+
287+
function handler (req, res) {
288+
res.writeHead(201, [['', 'test']])
289+
}
290+
291+
function listener (req, res) {
292+
}
293+
294+
request(server)
295+
.get('/')
296+
.expect(201, done)
297+
})
283298
})
284299

285300
describe('writeHead(status, flat arr)', function () {
@@ -301,6 +316,21 @@ describe('onHeaders(res, listener)', function () {
301316
.expect('X-Outgoing-Echo', 'test')
302317
.expect(201, done)
303318
})
319+
320+
it('should ignore empty header key', function (done) {
321+
var server = createServer(listener, handler)
322+
323+
function handler (req, res) {
324+
res.writeHead(201, ['', 'test'])
325+
}
326+
327+
function listener (req, res) {
328+
}
329+
330+
request(server)
331+
.get('/')
332+
.expect(201, done)
333+
})
304334
})
305335

306336
describe('writeHead(status, invalid flat arr)', function () {

0 commit comments

Comments
 (0)