D5952: url: always use str for proxy configuration
indygreg (Gregory Szorc)
phabricator at mercurial-scm.org
Fri Feb 15 16:31:14 EST 2019
indygreg updated this revision to Diff 14113.
REPOSITORY
rHG Mercurial
CHANGES SINCE LAST UPDATE
https://phab.mercurial-scm.org/D5952?vs=14055&id=14113
REVISION DETAIL
https://phab.mercurial-scm.org/D5952
AFFECTED FILES
mercurial/url.py
CHANGE DETAILS
diff --git a/mercurial/url.py b/mercurial/url.py
--- a/mercurial/url.py
+++ b/mercurial/url.py
@@ -131,17 +131,19 @@
else:
self.no_list = no_list
- proxyurl = bytes(proxy)
- proxies = {'http': proxyurl, 'https': proxyurl}
- ui.debug('proxying through %s\n' % util.hidepassword(proxyurl))
+ # Keys and values need to be str because the standard library
+ # expects them to be.
+ proxyurl = str(proxy)
+ proxies = {r'http': proxyurl, r'https': proxyurl}
+ ui.debug('proxying through %s\n' % util.hidepassword(bytes(proxy)))
else:
proxies = {}
urlreq.proxyhandler.__init__(self, proxies)
self.ui = ui
def proxy_open(self, req, proxy, type_):
- host = urllibcompat.gethost(req).split(':')[0]
+ host = pycompat.bytesurl(urllibcompat.gethost(req)).split(':')[0]
for e in self.no_list:
if host == e:
return None
@@ -184,15 +186,15 @@
def _generic_start_transaction(handler, h, req):
tunnel_host = req._tunnel_host
if tunnel_host:
- if tunnel_host[:7] not in ['http://', 'https:/']:
- tunnel_host = 'https://' + tunnel_host
+ if tunnel_host[:7] not in [r'http://', r'https:/']:
+ tunnel_host = r'https://' + tunnel_host
new_tunnel = True
else:
tunnel_host = urllibcompat.getselector(req)
new_tunnel = False
if new_tunnel or tunnel_host == urllibcompat.getfullurl(req): # has proxy
- u = util.url(tunnel_host)
+ u = util.url(pycompat.bytesurl(tunnel_host))
if new_tunnel or u.scheme == 'https': # only use CONNECT for HTTPS
h.realhostport = ':'.join([u.host, (u.port or '443')])
h.headers = req.headers.copy()
@@ -205,7 +207,7 @@
def _generic_proxytunnel(self):
proxyheaders = dict(
[(x, self.headers[x]) for x in self.headers
- if x.lower().startswith('proxy-')])
+ if x.lower().startswith(r'proxy-')])
self.send('CONNECT %s HTTP/1.0\r\n' % self.realhostport)
for header in proxyheaders.iteritems():
self.send('%s: %s\r\n' % header)
To: indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list