Mercurial > public > mercurial-scm > hg
diff mercurial/hgweb/hgweb_mod.py @ 36869:7ad6a275316f
hgweb: inline caching() and port to modern mechanisms
We only had one consumer of this simple function. While it could be
a generic function, let's not over abstract the code.
As part of inlining, we port it off wsgirequest, fix some Python 3
issues, and set a response header on our new response object so it
is ready once we start using it to send responses.
Differential Revision: https://phab.mercurial-scm.org/D2785
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Sat, 10 Mar 2018 14:19:27 -0800 |
parents | 8ddb5c354906 |
children | 1f42d621f090 |
line wrap: on
line diff
--- a/mercurial/hgweb/hgweb_mod.py Sat Mar 10 14:06:58 2018 -0800 +++ b/mercurial/hgweb/hgweb_mod.py Sat Mar 10 14:19:27 2018 -0800 @@ -18,7 +18,6 @@ HTTP_NOT_MODIFIED, HTTP_OK, HTTP_SERVER_ERROR, - caching, cspvalues, permhooks, ) @@ -388,7 +387,13 @@ # Don't enable caching if using a CSP nonce because then it wouldn't # be a nonce. if rctx.configbool('web', 'cache') and not rctx.nonce: - caching(self, wsgireq) # sets ETag header or raises NOT_MODIFIED + tag = 'W/"%d"' % self.mtime + if req.headers.get('If-None-Match') == tag: + raise ErrorResponse(HTTP_NOT_MODIFIED) + + wsgireq.headers.append((r'ETag', pycompat.sysstr(tag))) + res.headers['ETag'] = tag + if cmd not in webcommands.__all__: msg = 'no such method: %s' % cmd raise ErrorResponse(HTTP_BAD_REQUEST, msg)