diff -r 02bea04b4c54 -r ccb70a77f746 mercurial/hgweb/hgweb_mod.py --- a/mercurial/hgweb/hgweb_mod.py Sat Mar 10 18:19:27 2018 -0800 +++ b/mercurial/hgweb/hgweb_mod.py Sat Mar 10 18:42:00 2018 -0800 @@ -15,7 +15,6 @@ ErrorResponse, HTTP_BAD_REQUEST, HTTP_NOT_FOUND, - HTTP_NOT_MODIFIED, HTTP_OK, HTTP_SERVER_ERROR, cspvalues, @@ -391,7 +390,10 @@ if rctx.configbool('web', 'cache') and not rctx.nonce: tag = 'W/"%d"' % self.mtime if req.headers.get('If-None-Match') == tag: - raise ErrorResponse(HTTP_NOT_MODIFIED) + res.status = '304 Not Modified' + # Response body not allowed on 304. + res.setbodybytes('') + return res.sendresponse() wsgireq.headers.append((r'ETag', pycompat.sysstr(tag))) res.headers['ETag'] = tag @@ -426,9 +428,6 @@ return tmpl('error', error=pycompat.bytestr(inst)) except ErrorResponse as inst: wsgireq.respond(inst, ctype) - if inst.code == HTTP_NOT_MODIFIED: - # Not allowed to return a body on a 304 - return [''] return tmpl('error', error=pycompat.bytestr(inst)) def check_perm(self, rctx, req, op):