hgweb: ensure Content-Length and Content-Type are not promoted to HTTP_ on py3
authorMatt Harbison <matt_harbison@yahoo.com>
Sun, 27 Jan 2019 18:05:17 -0500
changeset 41428 4045ab21945a
parent 41427 40efcf78f3df
child 41429 7df10ea7a5b8
hgweb: ensure Content-Length and Content-Type are not promoted to HTTP_ on py3 In stabilizing test-lfs-serve-access.t for py3, the server started asserting on blob upload: Environment should not have the key: HTTP_CONTENT_LENGTH (use CONTENT_LENGTH instead) It could be avoided by explicitly setting the Content-Length header on the client side. I didn't go back to py2, but printing the original header here in py37 revealed 'Content-length' when sent to the error log.
mercurial/hgweb/server.py
--- a/mercurial/hgweb/server.py	Sun Jan 27 15:42:55 2019 -0500
+++ b/mercurial/hgweb/server.py	Sun Jan 27 18:05:17 2019 -0500
@@ -165,7 +165,7 @@
         if length:
             env[r'CONTENT_LENGTH'] = length
         for header in [h for h in self.headers.keys()
-                       if h not in (r'content-type', r'content-length')]:
+                      if h.lower() not in (r'content-type', r'content-length')]:
             hkey = r'HTTP_' + header.replace(r'-', r'_').upper()
             hval = self.headers.get(header)
             hval = hval.replace(r'\n', r'').strip()