Skip to content

Commit d9354ef

Browse files
committed
Fix handling errors from setting cookie
1 parent f9f2318 commit d9354ef

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

HISTORY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ unreleased
22
==========
33

44
* Add `priority` to `cookie` options
5+
* Fix handling errors from setting cookie
56
* Support any type in `secret` that `crypto.createHmac` supports
67
78
- Fix `expires` option to reject invalid dates

index.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -240,7 +240,11 @@ function session(options) {
240240
}
241241

242242
// set cookie
243-
setcookie(res, name, req.sessionID, secrets[0], req.session.cookie.data);
243+
try {
244+
setcookie(res, name, req.sessionID, secrets[0], req.session.cookie.data)
245+
} catch (err) {
246+
defer(next, err)
247+
}
244248
});
245249

246250
// proxy end() to commit the session

test/session.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1945,6 +1945,23 @@ describe('session()', function(){
19451945
.expect(200, done)
19461946
})
19471947

1948+
it('should forward errors setting cookie', function (done) {
1949+
var cb = after(2, done)
1950+
var server = createServer({ cookie: { expires: new Date(NaN) } }, function (req, res) {
1951+
res.end()
1952+
})
1953+
1954+
server.on('error', function onerror (err) {
1955+
assert.ok(err)
1956+
assert.strictEqual(err.message, 'option expires is invalid')
1957+
cb()
1958+
})
1959+
1960+
request(server)
1961+
.get('/admin')
1962+
.expect(200, cb)
1963+
})
1964+
19481965
it('should preserve cookies set before writeHead is called', function(done){
19491966
var server = createServer(null, function (req, res) {
19501967
var cookie = new Cookie()

0 commit comments

Comments
 (0)