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