summaryrefslogtreecommitdiff
path: root/flup/middleware/session.py
diff options
context:
space:
mode:
authorAllan Saddi <allan@saddi.com>2005-04-23 09:46:05 +0000
committerAllan Saddi <allan@saddi.com>2005-04-23 09:46:05 +0000
commitd5e1c18a454e3655bb604a7d65196399dc861702 (patch)
treed849afbf8bb285e4bb5294ee45709425a417f5da /flup/middleware/session.py
parent4fab5b0ff69bfed569fbf76b5f409b6418b13ca9 (diff)
downloadflup-d5e1c18a454e3655bb604a7d65196399dc861702.tar.gz
Ensure SessionStore.checkOutSession() never returns an invalidated Session.
Diffstat (limited to 'flup/middleware/session.py')
-rw-r--r--flup/middleware/session.py12
1 files changed, 9 insertions, 3 deletions
diff --git a/flup/middleware/session.py b/flup/middleware/session.py
index 81818d6..129c3e9 100644
--- a/flup/middleware/session.py
+++ b/flup/middleware/session.py
@@ -202,9 +202,15 @@ class SessionStore(object):
try:
sess = self._loadSession(identifier)
if sess is not None:
- assert sess.identifier not in self._checkOutList
- self._checkOutList[sess.identifier] = sess
- sess.touch()
+ if sess.isValid:
+ assert sess.identifier not in self._checkOutList
+ self._checkOutList[sess.identifier] = sess
+ sess.touch()
+ else:
+ # No longer valid (same as not existing). Delete/unlock
+ # the session.
+ self._deleteSession(sess.identifier)
+ sess = None
return sess
finally:
self._lock.release()