t.web's Request.prePathURL does not rebuild the URL correctly
|Reported by:||emgee||Owned by:|
(github, coverage, patch, buildbot, log)
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:
Change History (6)
comment:1 Changed 8 years ago by exarkun
- Owner changed from jknight to exarkun
- Status changed from new to assigned
comment:3 Changed 8 years ago by exarkun
- Keywords review added
- Owner exarkun deleted
- Status changed from assigned to new
comment:4 Changed 8 years ago by therve
- Keywords review removed
- Owner set to exarkun
- Priority changed from normal to highest