diff --git a/mercurial/hgweb/hgweb_mod.py b/mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py +++ b/mercurial/hgweb/hgweb_mod.py @@ -312,7 +312,7 @@ # This state is global across all threads. encoding.encoding = rctx.config('web', 'encoding') - rctx.repo.ui.environ = wsgireq.env + rctx.repo.ui.environ = req.rawenv if rctx.csp: # hgwebdir may have added CSP header. Since we generate our own, diff --git a/mercurial/hgweb/request.py b/mercurial/hgweb/request.py --- a/mercurial/hgweb/request.py +++ b/mercurial/hgweb/request.py @@ -149,6 +149,8 @@ headers = attr.ib() # Request body input stream. bodyfh = attr.ib() + # WSGI environment dict, unmodified. + rawenv = attr.ib() def parserequestfromenv(env, bodyfh, reponame=None, altbaseurl=None): """Parse URL components from environment variables. @@ -342,7 +344,8 @@ querystring=querystring, qsparams=qsparams, headers=headers, - bodyfh=bodyfh) + bodyfh=bodyfh, + rawenv=env) class offsettrackingwriter(object): """A file object like object that is append only and tracks write count.