Update of /cvsroot/webware/Webware/WebKit
In directory sc8-pr-cvs1:/tmp/cvs-serv21004
Modified Files:
Application.py SessionFileStore.py
Log Message:
Incorporate [ 678129 ] Report original exception for session unpickle error
originally from Oleg Nolga.
SessionFileStore now reports decoding errors via app.handleException()
for situations where custom depickling code is broken. Key error
is raised and caught in isSessionProblematic where the session
is considered expired at that point.
Index: Application.py
===================================================================
RCS file: /cvsroot/webware/Webware/WebKit/Application.py,v
retrieving revision 1.159
retrieving revision 1.160
diff -C2 -d -r1.159 -r1.160
*** Application.py 22 Jan 2003 09:03:25 -0000 1.159
--- Application.py 18 Feb 2003 05:40:29 -0000 1.160
***************
*** 492,501 ****
if sid:
if self._sessions.has_key(sid):
! if (time()-request.session().lastAccessTime()) >= request.session().timeout():
! if debug: print prefix, 'session expired: %s' % repr(sid)
! del self._sessions[sid]
problematic = 1
- else:
- problematic = 0
else:
if debug: print prefix, 'session does not exist: %s' % repr(sid)
--- 492,505 ----
if sid:
if self._sessions.has_key(sid):
! try:
! session = request.session()
! if (time()-session.lastAccessTime()) >= session.timeout():
! if debug: print prefix, 'session expired: %s' % repr(sid)
! del self._sessions[sid]
! problematic = 1
! else:
! problematic = 0
! except KeyError:
problematic = 1
else:
if debug: print prefix, 'session does not exist: %s' % repr(sid)
Index: SessionFileStore.py
===================================================================
RCS file: /cvsroot/webware/Webware/WebKit/SessionFileStore.py,v
retrieving revision 1.14
retrieving revision 1.15
diff -C2 -d -r1.14 -r1.15
*** SessionFileStore.py 10 Jan 2003 19:03:47 -0000 1.14
--- SessionFileStore.py 18 Feb 2003 05:40:29 -0000 1.15
***************
*** 50,58 ****
raise KeyError, key
try:
! item = self.decoder()(file)
! except:
! # Corrupt data; pretend it doesn't exist
raise KeyError, key
- file.close()
finally:
self._lock.release()
--- 50,62 ----
raise KeyError, key
try:
! try:
! item = self.decoder()(file)
! finally:
! file.close()
! except: # session can't be unpickled
! os.remove(filename) # remove session file
! print "Error loading session from disk:", key
! self.application().handleException()
raise KeyError, key
finally:
self._lock.release()
|