Mercurial > public > mercurial-scm > hg-stable
diff mercurial/hgweb/hgwebdir_mod.py @ 36879:98baf8dea553
hgweb: port static file handling to new response API
hgwebdir_mod hasn't received as much porting effort. So we had to
do some minor plumbing to get it to match hgweb_mod and to support
the new response object.
Differential Revision: https://phab.mercurial-scm.org/D2789
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 10 Mar 2018 15:46:29 -0800 |
parents | 3d60a22e27f5 |
children | 97e1dda94af8 |
line wrap: on
line diff
--- a/mercurial/hgweb/hgwebdir_mod.py Sat Mar 10 15:37:29 2018 -0800 +++ b/mercurial/hgweb/hgwebdir_mod.py Sat Mar 10 15:46:29 2018 -0800 @@ -230,12 +230,14 @@ def _runwsgi(self, wsgireq): req = wsgireq.req + res = wsgireq.res try: self.refresh() csp, nonce = cspvalues(self.ui) if csp: + res.headers['Content-Security-Policy'] = csp wsgireq.headers.append(('Content-Security-Policy', csp)) virtual = wsgireq.env.get("PATH_INFO", "").strip('/') @@ -243,6 +245,10 @@ ctype = tmpl('mimetype', encoding=encoding.encoding) ctype = templater.stringify(ctype) + # Global defaults. These can be overridden by any handler. + res.status = '200 Script output follows' + res.headers['Content-Type'] = ctype + # a static file if virtual.startswith('static/') or 'static' in req.qsparams: if virtual.startswith('static/'): @@ -256,8 +262,9 @@ if isinstance(tp, str): tp = [tp] static = [os.path.join(p, 'static') for p in tp] - staticfile(static, fname, wsgireq) - return [] + + staticfile(static, fname, res) + return res.sendresponse() # top-level index