Re: SCGI + Quixote, Location / ?

Shahms King <[email protected]>
Newsgroups gmane.comp.web.quixote.user
Message-ID <[email protected]>
I should have piped up earlier, but this behavior also occurs with
mod_python.  I can't speak for mod_scgi's SCRIPT_NAME and PATH_INFO
behavior, but as of Quixote 2.0 (haven't tried 2.1 yet, though I need to
get rolling on the Fedora Extras packages...) the "abort on an empty
PATH_INFO" behavior essentially means that Quixote will append a
trailing slash onto any directory except the root, leading to situtions
where "http://example.com/one/two/three" redirects with the trailing
slash but "http://example.com/one/two" does not (unless the developer
jumps through some hoops to work around this behavior in the publisher).

I'm not sure what the correct behavior is, but I think consistency is
probably the best policy. Possibly changing Publisher.try_publish to the
following would work:

====================== cut =========================

diff -u publish.py.orig publish.py
--- publish.py.orig     2005-08-11 08:46:13.638524435 -0700
+++ publish.py  2005-08-11 09:04:18.533006111 -0700
@@ -244,11 +244,15 @@
          Exceptions are handled by the caller.
          """
          self.start_request()
-        path = request.get_environ('PATH_INFO', '')
-        assert path[:1] == '/'
-        # split path into components
-        path = path[1:].split('/')
-        output = self.root_directory._q_traverse(path)
+        path = request.get_environ('PATH_INFO', '').split('/')
+        # remove the leading slash, if present
+        if not path[0]:
+            path = path[1:]
+        # handle an empty path like Directory._q_traverse would
+        if path:
+            output = self.root_directory._q_traverse(path)
+        else:
+            output = self.root_directory()
          # The callable ran OK, commit any changes to the session
          self.finish_successful_request()
          return output

======================== cut =======================


The above would even stand a chance of working where SCRIPT_NAME is a
directory and PATH_INFO doesn't start with a slash without trying to
guess what PATH_INFO and SCRIPT_NAME should have been.
-- 
Shahms E. King <[email protected]>
Multnomah ESD

Public Key:
http://shahms.mesd.k12.or.us/~sking/shahms.asc
Fingerprint:
1612 054B CE92 8770 F1EA  AB1B FEAB 3636 45B2 D75B
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.