Ticket #2934 defect closed fixed

Opened 6 years ago

Last modified 6 years ago

t.web's Request.prePathURL does not rebuild the URL correctly

Reported by: emgee Owned by:
Priority: highest Milestone:
Component: web Keywords:
Cc: matt@… Branch: branches/prepath-quoting-2934
(diff, github, buildbot, log)
Author: exarkun Launchpad Bug:


Quick summary is that the way Request unquotes and quotes the bits of the URL is not symmetrical. This shows up when a path segment contains a '/' for example.

Request.postpath is a list of decoded, i.e. real, path segments:

self.postpath = map(unquote, string.split(self.path[1:], '/'))

Items in Request.prepath are moved to Request.prepath as child resource are located, making prepath also a list of decoded path segments.

However, Request._prePathURL does not re-quote the individual prepath items. Instead it seems to rely on urllib.quote working (which it doesn't) for the whole URL string.

A fix can probably be taken from Nevow's flattener code. It uses the following to encode each path segment, query parameter name, query parameter value and fragment:

urllib.quote(original, safe="-_.!*'()")

Change History


Changed 6 years ago by exarkun

  • status changed from new to assigned
  • owner changed from jknight to exarkun


Changed 6 years ago by exarkun

  • branch set to branches/prepath-quoting-2934
  • author set to exarkun

(In [22049]) Branching to 'prepath-quoting-2934'


Changed 6 years ago by exarkun

  • status changed from assigned to new
  • keywords review added
  • owner exarkun deleted

I fixed this by quoting each segment with safe= instead of quoting the whole URL.

This is different from what it used to do in that the hostname no longer goes through the quoting step. I don't know if this is right or not.

Ready for review.


Changed 6 years ago by therve

  • priority changed from normal to highest
  • keywords review removed
  • owner set to exarkun

I don't think that quoting hostname is a problem. It should not contain characters that needs quoting anyway.

Please merge.


Changed 6 years ago by exarkun

  • status changed from new to closed
  • resolution set to fixed

(In [22056]) Merge prepath-quoting-2934

Author: exarkun Reviewer: therve Fixes #2934

Correctly re-quote URL path segments when generating an URL string to return from Request.prePathURL.


Changed 3 years ago by <automation>

  • owner exarkun deleted
Note: See TracTickets for help on using tickets.