I was talking about the _unlock call at the top of _try_store_on_disk

    def _try_store_on_disk(self, request, response):
        if not hasattr(os,'mkdir'): return
        if response._dbtable_and_field \
                or not response.session_id \
                or self._forget:
            self._unlock(response)
            return

The session.forget(response) would remove the attribute session_file if a 
del session_file occurs in _unlock() but self._forget being true will cause 
the _unlock to run again in the branch above and at the top of _unlock the 
if response and response.session_file would cause AttributeError. This piece 
of code is very intricate. :-)


Reply via email to