diff -r e67a2e05fa8a -r 219b23359f4c mercurial/hgweb/hgwebdir_mod.py --- a/mercurial/hgweb/hgwebdir_mod.py Sun Mar 11 13:55:13 2018 -0700 +++ b/mercurial/hgweb/hgwebdir_mod.py Sun Mar 11 15:33:56 2018 -0700 @@ -33,7 +33,6 @@ error, hg, profiling, - pycompat, scmutil, templater, ui as uimod, @@ -83,33 +82,6 @@ yield (prefix + '/' + util.pconvert(path[len(roothead):]).lstrip('/')).strip('/'), path -def geturlcgivars(baseurl, port): - """ - Extract CGI variables from baseurl - - >>> geturlcgivars(b"http://host.org/base", b"80") - ('host.org', '80', '/base') - >>> geturlcgivars(b"http://host.org:8000/base", b"80") - ('host.org', '8000', '/base') - >>> geturlcgivars(b'/base', 8000) - ('', '8000', '/base') - >>> geturlcgivars(b"base", b'8000') - ('', '8000', '/base') - >>> geturlcgivars(b"http://host", b'8000') - ('host', '8000', '/') - >>> geturlcgivars(b"http://host/", b'8000') - ('host', '8000', '/') - """ - u = util.url(baseurl) - name = u.host or '' - if u.port: - port = u.port - path = u.path or "" - if not path.startswith('/'): - path = '/' + path - - return name, pycompat.bytestr(port), path - def readallowed(ui, req): """Check allow_read and deny_read config options of a repo's ui object to determine user permissions. By default, with neither option set (or @@ -359,7 +331,6 @@ self.stripecount = self.ui.config('web', 'stripes') if self.stripecount: self.stripecount = int(self.stripecount) - self._baseurl = self.ui.config('web', 'baseurl') prefix = self.ui.config('web', 'prefix') if prefix.startswith('/'): prefix = prefix[1:] @@ -376,7 +347,8 @@ wsgicgi.launch(self) def __call__(self, env, respond): - wsgireq = requestmod.wsgirequest(env, respond) + baseurl = self.ui.config('web', 'baseurl') + wsgireq = requestmod.wsgirequest(env, respond, altbaseurl=baseurl) return self.run_wsgi(wsgireq) def run_wsgi(self, wsgireq): @@ -455,7 +427,8 @@ # Re-parse the WSGI environment to take into account our # repository path component. wsgireq.req = requestmod.parserequestfromenv( - wsgireq.env, wsgireq.req.bodyfh, reponame=virtualrepo) + wsgireq.env, wsgireq.req.bodyfh, reponame=virtualrepo, + altbaseurl=self.ui.config('web', 'baseurl')) try: # ensure caller gets private copy of ui repo = hg.repository(self.ui.copy(), real) @@ -502,7 +475,6 @@ for column in sortable] self.refresh() - self.updatereqenv(wsgireq.env) entries = indexentries(self.ui, self.repos, wsgireq, req, self.stripecount, sortcolumn=sortcolumn, @@ -524,8 +496,6 @@ def config(section, name, default=uimod._unset, untrusted=True): return self.ui.config(section, name, default, untrusted) - self.updatereqenv(wsgireq.env) - url = wsgireq.env.get('SCRIPT_NAME', '') if not url.endswith('/'): url += '/' @@ -557,10 +527,3 @@ } tmpl = templater.templater.frommapfile(mapfile, defaults=defaults) return tmpl - - def updatereqenv(self, env): - if self._baseurl is not None: - name, port, path = geturlcgivars(self._baseurl, env['SERVER_PORT']) - env['SERVER_NAME'] = name - env['SERVER_PORT'] = port - env['SCRIPT_NAME'] = path