D3356: wsgicgi: un-do some prior porting work that is now wrong
durin42 (Augie Fackler)
phabricator at mercurial-scm.org
Sat Apr 14 04:32:35 UTC 2018
durin42 created this revision.
Herald added a reviewer: pulkit.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
The Python 3 WSGI behavior is that the environ dict should be full of
unicodes. We previously tried Too Hard here, so we unwind that bit of porting.
Also add some bytesurl() encodes on status and headers.
test-clone-cgi.t now passes.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D3356
AFFECTED FILES
contrib/python3-whitelist
mercurial/hgweb/wsgicgi.py
CHANGE DETAILS
diff --git a/mercurial/hgweb/wsgicgi.py b/mercurial/hgweb/wsgicgi.py
--- a/mercurial/hgweb/wsgicgi.py
+++ b/mercurial/hgweb/wsgicgi.py
@@ -10,8 +10,10 @@
from __future__ import absolute_import
+import os
+
from .. import (
- encoding,
+ pycompat,
)
from ..utils import (
@@ -26,7 +28,7 @@
procutil.setbinary(procutil.stdin)
procutil.setbinary(procutil.stdout)
- environ = dict(encoding.environ.iteritems())
+ environ = dict(os.environ.iteritems()) # re-exports
environ.setdefault(r'PATH_INFO', '')
if environ.get(r'SERVER_SOFTWARE', r'').startswith(r'Microsoft-IIS'):
# IIS includes script_name in PATH_INFO
@@ -61,9 +63,10 @@
elif not headers_sent:
# Before the first output, send the stored headers
status, response_headers = headers_sent[:] = headers_set
- out.write('Status: %s\r\n' % status)
- for header in response_headers:
- out.write('%s: %s\r\n' % header)
+ out.write('Status: %s\r\n' % pycompat.bytesurl(status))
+ for hk, hv in response_headers:
+ out.write('%s: %s\r\n' % (pycompat.bytesurl(hk),
+ pycompat.bytesurl(hv)))
out.write('\r\n')
out.write(data)
diff --git a/contrib/python3-whitelist b/contrib/python3-whitelist
--- a/contrib/python3-whitelist
+++ b/contrib/python3-whitelist
@@ -45,6 +45,7 @@
test-check-pylint.t
test-check-shbang.t
test-children.t
+test-clone-cgi.t
test-clone-pull-corruption.t
test-clone-r.t
test-clone-update-order.t
To: durin42, pulkit, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list