Download Install Tutorial Docs FAQ Tools WikiLicense Team IRC Planet Involvement Shop Book

Changeset 541

Show
Ignore:
Timestamp:
08/18/05 10:59:17
Author:
mikerobi
Message:

sessionFilter: fixed a bug in cookie handling that was introduced in r538

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/cherrypy/lib/filter/sessionfilter/__init__.py

    r540 r541  
    6161        cherrypy.config.update(_sessionDefaults, override = False) 
    6262        self.sessionManager = self.__newSessionManager(sessionName, sessionPath) 
    63         self.sessionManager.settings = local() 
    6463         
    6564    def __newSessionManager(self, sessionName, sessionPath): 
     
    9291     
    9392     
    94     def __loadConfigData(self, sessionManager): 
    95             settings = {} 
    96             for settingName in _sessionSettingNames: 
    97                 default = cherrypy.config.get('sessionFilter.%s' % settingName) 
    98                 value = cherrypy.config.get('sessionFilter.%s.%s' % (sessionManager.name, settingName), default) 
    99                 settings[settingName] = value 
    100                  
    101                 setattr(sessionManager.settings, settingName, value) 
    102  
    10393    def __loadSessions(self): 
    104         # look up all of the session keys by cookie 
     94         
    10595        sessionManager = self.sessionManager 
    10696        sessionName = sessionManager.name 
     
    10999            return 
    110100 
    111         self.__loadConfigData(sessionManager) 
    112          
    113101        cookieName = sessionManager.cookieName 
    114102         
     
    117105        except KeyError: 
    118106            sessionKey = sessionManager.createSession() 
    119             self.saveSessionDictKey(sessionKey, sessionManager)  
     107            self.saveSessionDictKey(sessionKey)  
    120108            sessionManager.loadSession(sessionKey) 
    121109 
     
    124112        except SessionNotFoundError: 
    125113            sessionKey = sessionManager.createSession() 
    126             self.saveSessionDictKey(sessionKey, sessionManager)   
     114            self.saveSessionDictKey(sessionKey)   
    127115            sessionManager.loadSession(sessionKey) 
    128116 
    129     def saveSessionDictKey(self, sessionKey, sessionManager): 
     117    def saveSessionDictKey(self, sessionKey): 
    130118        """  
    131119        Sets the session key in a cookie.  
    132120        """ 
     121 
     122        sessionManager = self.sessionManager 
    133123         
    134124        sessionName = sessionManager.name 
     
    138128        # if we do not have a manually defined cookie path use path where the session 
    139129        # manager was defined 
    140         try: 
    141             cookiePath = self.settings.cookiePath 
    142         except AttributeError
     130         
     131        cookiePath = sessionManager.getSetting('cookiePath') 
     132        if not cookiePath
    143133            cookiePath = sessionManager.path 
    144134 
    145         timeout = sessionManager.settings.timeout 
     135        timeout = sessionManager.getSetting('timeout') 
    146136         
    147137        cherrypy.response.simpleCookie[cookieName] = sessionKey 
     
    150140         
    151141        # try and set the cookie domain 
    152         try: 
    153             cookieDomain = self.settings.cookieDomain 
     142        cookieDomain = sessionManager.getSetting('cookieDomain') 
     143        if cookieDomain: 
    154144            cherrypy.response.simpleCookie[cookieName]['domain'] = cookieDomain 
    155         except AttributeError: 
    156             pass 
    157145 
    158146        # try and set a cookie comment 
    159         try: 
    160             cookieComment = self.settings.cookieComment 
     147        cookieComment = sessionManager.getSetting('cookieComment') 
     148        if cookieComment: 
    161149            cherrypy.response.simpleCookie[cookieName]['comment'] = cookieComment 
    162         except AttributeError: 
    163             pass 
    164150 
    165151    def __saveSessions(self): 
  • trunk/cherrypy/lib/filter/sessionfilter/baseadaptor.py

    r540 r541  
    6565        """ Function to return a new sessioId """ 
    6666        try: 
    67             sessionKeyFunc = self.settings.keyGenerator 
     67            sessionKeyFunc = self.getSetting('keyGenerator') 
    6868        except AttributeError: 
    6969            sessionKeyFunc = None 
     
    104104            from cherrypy._cpthreadinglocal import local 
    105105 
    106         # settings dict 
    107         self.settings = local() 
    108             
    109      
    110106    # there should never be a reason to modify the remaining functions, they used  
    111107    # internally by the sessionFilter 
     
    114110      return {  
    115111               'timestamp'  : int(time.time()), 
    116                'timeout'    : self.settings.timeout
     112               'timeout'    : self.getSetting('timeout')
    117113               'lastAccess' : int(time.time()), 
    118114               'key'        : self.generateSessionKey() 
     
    120116              
    121117    def getSetting(self, settingName, default = None): 
    122         try: 
    123             return getattr(self.settings, settingName) 
    124         except AttributeError: 
    125118            missing = object() 
    126119            result = cherrypy.config.get('sessionFilter.%s.%s' % (self.name, settingName), missing) 
     
    167160            self.saveSessionDict(session) 
    168161         
    169             cacheTimeout = self.settings.cacheTimeout 
     162            cacheTimeout = self.getSetting('cacheTimeout') 
    170163             
    171164            if session.threadCount == 0 and (self.noCache or not cacheTimeout): 
     
    180173        """ cleanup all inactive sessions """ 
    181174         
    182         cacheTimeout = self.settings.cacheTimeout 
     175        cacheTimeout = self.getSetting('cacheTimeout') 
    183176         
    184177        # don't waste cycles if we aren't caching inactive sessions 
  • trunk/cherrypy/lib/filter/sessionfilter/fileadaptor.py

    r540 r541  
    5656            raise SessionNotFoundError 
    5757         
    58         storagePath = self.settings.storagePath 
     58        storagePath = self.getSetting('storagePath') 
    5959 
    6060        fileName = '%s-%s' % (self.name, sessionKey) 
     
    7575    def saveSessionDict(self, sessionData): 
    7676     
    77         storagePath = self.settings.storagePath 
     77        storagePath = self.getSetting('storagePath') 
    7878 
    7979        fileName = '%s-%s' % (self.name, sessionData.key) 
     
    8787 
    8888    def deleteSession(self, sessionKey): 
    89         storagePath = self.settings.storagePath 
     89        storagePath = self.getSetting('storagePath') 
    9090        fileName = '%s-%s' % (self.name, sessionKey) 
    9191        filePath = os.path.join(storagePath, fileName) 
     
    9797     
    9898    def _cleanUpOldSessions(self): 
    99         storagePath = self.settings.storagePath 
     99        storagePath = self.getSetting('storagePath') 
    100100        sessionFileList = os.listdir(storagePath) 
    101101         
     
    111111 
    112112    def _debugDump(self): 
    113         storagePath = self.settings.storagePath 
     113        storagePath = self.getSetting('storagePath') 
    114114        sessionFileList = os.listdir(storagePath) 
    115115         

Hosted by WebFaction

Log in as guest/cpguest to create tickets