From 6bd689ccbcd301259cd29a7c2b638f08a9aa1052 Mon Sep 17 00:00:00 2001 From: Ivan Santos <301291+pragmaticivan@users.noreply.github.com> Date: Fri, 14 Dec 2018 17:49:37 -0800 Subject: [PATCH 1/2] #703 - Fixes race condition when using express-session with custom store fixes #703 --- lib/sessionmanager.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lib/sessionmanager.js b/lib/sessionmanager.js index 0fdbd8bd..534ababd 100644 --- a/lib/sessionmanager.js +++ b/lib/sessionmanager.js @@ -23,7 +23,16 @@ SessionManager.prototype.logIn = function(req, user, cb) { req.session = {}; } req.session[self._key] = req._passport.session; - cb(); + if (typeof req.session.save == 'function') { + req.session.save(function () { + if (err) { + cb(err); + } + cb(); + }); + } else { + cb(); + } }); } From 416abce897131584db6e0f97eefa1dcf3e2209e2 Mon Sep 17 00:00:00 2001 From: Ivan Santos <301291+pragmaticivan@users.noreply.github.com> Date: Mon, 31 Dec 2018 10:11:12 -0800 Subject: [PATCH 2/2] Fixes double callback call and wrong error param --- lib/sessionmanager.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/sessionmanager.js b/lib/sessionmanager.js index 534ababd..54818650 100644 --- a/lib/sessionmanager.js +++ b/lib/sessionmanager.js @@ -4,7 +4,7 @@ function SessionManager(options, serializeUser) { options = undefined; } options = options || {}; - + this._key = options.key || 'passport'; this._serializeUser = serializeUser; } @@ -24,9 +24,9 @@ SessionManager.prototype.logIn = function(req, user, cb) { } req.session[self._key] = req._passport.session; if (typeof req.session.save == 'function') { - req.session.save(function () { + req.session.save(function (err) { if (err) { - cb(err); + return cb(err); } cb(); });