diff mercurial/hgweb/hgweb_mod.py @ 36025:98a00aa0288d

wireprotoserver: move error response handling out of hgweb The exception handler for ErrorResponse has more to do with the wire protocol than the generic HTTP server. Move the code so it lives alongside other wire protocol code. Differential Revision: https://phab.mercurial-scm.org/D2021
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 31 Jan 2018 17:34:45 -0800
parents e69e65b2b4a9
children af0a19d8812b
line wrap: on
line diff
--- a/mercurial/hgweb/hgweb_mod.py	Wed Jan 31 16:43:46 2018 -0800
+++ b/mercurial/hgweb/hgweb_mod.py	Wed Jan 31 17:34:45 2018 -0800
@@ -369,18 +369,7 @@
                 if cmd in perms:
                     self.check_perm(rctx, req, perms[cmd])
             except ErrorResponse as inst:
-                # A client that sends unbundle without 100-continue will
-                # break if we respond early.
-                if (cmd == 'unbundle' and
-                    (req.env.get('HTTP_EXPECT',
-                                 '').lower() != '100-continue') or
-                    req.env.get('X-HgHttp2', '')):
-                    req.drain()
-                else:
-                    req.headers.append((r'Connection', r'Close'))
-                req.respond(inst, wireprotoserver.HGTYPE,
-                            body='0\n%s\n' % inst)
-                return ''
+                return protohandler['handleerror'](inst)
 
             return protohandler['dispatch']()