[mod_python] Oops, found a small bug in the session code

Jim Gallacher jg.lists at sympatico.ca
Wed Jun 15 20:02:03 EDT 2005


Graham Dumpleton wrote:
> Dan Eloff wrote ..
> 
>>Just discovered this.
>>
>># XXX Not sure why, but on Win32 hlist.directory
>># may contain a trailing \ - need to investigate,
>># this value is given to us directly by httpd
>>if os.name == 'nt' and c.path[-1] == '\\':
>>    c.path = c.path[:-1]
> 
> 
> The underlying problem is a known issue. The hack in the session
> code was presumably put there because someone didn't understand
> the root cause. Anyway, the underlying problem has already been
> fixed for 3.2 and the hack in Session code removed.

Yes, it's been fixed. Current code in svn mod_python/trunk looks like this:


     def make_cookie(self):

         if self._secret:
             c = Cookie.SignedCookie(COOKIE_NAME, self._sid,
                                     secret=self._secret)
         else:
             c = Cookie.Cookie(COOKIE_NAME, self._sid)

         config = self._req.get_options()
         if config.has_key("ApplicationPath"):
             c.path = config["ApplicationPath"]
         else:
             # the path where *Handler directive was specified
             dirpath = self._req.hlist.directory
             if dirpath:
                 docroot = self._req.document_root()
                 c.path = dirpath[len(docroot):]
             else:
                 c.path = '/'

             # Sometimes there is no path, e.g. when Location
             # is used. When Alias or UserDir are used, then
             # the path wouldn't match the URI. In those cases
             # just default to '/'
             if not c.path or not self._req.uri.startswith(c.path):
                 c.path = '/'

         return c


Jim


More information about the Mod_python mailing list