# HG changeset patch
# User Augie Fackler <durin42@gmail.com>
# Date 2011-07-27 23:35:35
# Node ID 4f39610996fade2926152974916f2715f973447c
# Parent  494b26ad87365d9c309a1f487271df255d90a0c3

http2: send an extra header to signal a non-broken client

Some proxies strip the expect header because they forward requests in
a non-compliant way or as a way to defend against bogus clients.

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
@@ -129,8 +129,9 @@ class hgweb(object):
                 # 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'):
+                    (req.env.get('HTTP_EXPECT',
+                                 '').lower() != '100-continue') or
+                    req.env.get('X-HgHttp2', '')):
                     req.drain()
                 req.respond(inst, protocol.HGTYPE)
                 return '0\n%s\n' % inst.message
diff --git a/mercurial/httprepo.py b/mercurial/httprepo.py
--- a/mercurial/httprepo.py
+++ b/mercurial/httprepo.py
@@ -78,6 +78,7 @@ class httprepository(wireproto.wirerepos
 
         if data and self.ui.configbool('ui', 'usehttp2', False):
             headers['Expect'] = '100-Continue'
+            headers['X-HgHttp2'] = '1'
 
         self.ui.debug("sending %s command\n" % cmd)
         q = [('cmd', cmd)]