Mercurial > public > mercurial-scm > hg
comparison mercurial/hgweb/hgweb_mod.py @ 36898:d0b0fedbfb53
hgweb: change how dispatch path is reported
When I implemented the new request object, I carried forward some
ugly hacks until I could figure out what was happening. One of those
was the handling of PATH_INFO to determine how to route hgweb
requests.
Essentially, if we have PATH_INFO data, we route according to
that. But if we don't, we route by the query string. I question
if we still need to support query string routing. But that's for
another day, I suppose.
In this commit, we clean up the ugly "havepathinfo" hack and
replace it with a "dispatchpath" attribute that can hold None or
empty string to differentiate between the presence of PATH_INFO.
This is still a bit hacky. But at least the request parsing
and routing code is explicit about the meaning now.
Differential Revision: https://phab.mercurial-scm.org/D2820
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sun, 11 Mar 2018 13:38:56 -0700 |
parents | 4daa22071d5d |
children | 84110a1d0f7d |
comparison
equal
deleted
inserted
replaced
36897:d7fd203e36cc | 36898:d0b0fedbfb53 |
---|---|
322 handled = wireprotoserver.handlewsgirequest( | 322 handled = wireprotoserver.handlewsgirequest( |
323 rctx, req, res, self.check_perm) | 323 rctx, req, res, self.check_perm) |
324 if handled: | 324 if handled: |
325 return res.sendresponse() | 325 return res.sendresponse() |
326 | 326 |
327 if req.havepathinfo: | 327 # Old implementations of hgweb supported dispatching the request via |
328 # the initial query string parameter instead of using PATH_INFO. | |
329 # If PATH_INFO is present (signaled by ``req.dispatchpath`` having | |
330 # a value), we use it. Otherwise fall back to the query string. | |
331 if req.dispatchpath is not None: | |
328 query = req.dispatchpath | 332 query = req.dispatchpath |
329 else: | 333 else: |
330 query = req.querystring.partition('&')[0].partition(';')[0] | 334 query = req.querystring.partition('&')[0].partition(';')[0] |
331 | 335 |
332 # translate user-visible url structure to internal structure | 336 # translate user-visible url structure to internal structure |