Mercurial > hg
changeset 13820:65b89e80f892
url: use url.url in proxyhandler
author | Brodie Rao <brodie@bitheap.org> |
---|---|
date | Wed, 30 Mar 2011 20:01:44 -0700 |
parents | d16894e29f91 |
children | a35aff48d577 |
files | mercurial/url.py |
diffstat | 1 files changed, 10 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/url.py Wed Mar 30 20:01:35 2011 -0700 +++ b/mercurial/url.py Wed Mar 30 20:01:44 2011 -0700 @@ -7,7 +7,7 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. -import urllib, urllib2, urlparse, httplib, os, socket, cStringIO +import urllib, urllib2, httplib, os, socket, cStringIO import __builtin__ from i18n import _ import keepalive, util @@ -407,14 +407,10 @@ if not (proxyurl.startswith('http:') or proxyurl.startswith('https:')): proxyurl = 'http://' + proxyurl + '/' - snpqf = urlparse.urlsplit(proxyurl) - proxyscheme, proxynetloc, proxypath, proxyquery, proxyfrag = snpqf - hpup = netlocsplit(proxynetloc) - - proxyhost, proxyport, proxyuser, proxypasswd = hpup - if not proxyuser: - proxyuser = ui.config("http_proxy", "user") - proxypasswd = ui.config("http_proxy", "passwd") + proxy = url(proxyurl) + if not proxy.user: + proxy.user = ui.config("http_proxy", "user") + proxy.passwd = ui.config("http_proxy", "passwd") # see if we should use a proxy for this url no_list = ["localhost", "127.0.0.1"] @@ -429,13 +425,10 @@ else: self.no_list = no_list - proxyurl = urlparse.urlunsplit(( - proxyscheme, netlocunsplit(proxyhost, proxyport, - proxyuser, proxypasswd or ''), - proxypath, proxyquery, proxyfrag)) + proxyurl = str(proxy) proxies = {'http': proxyurl, 'https': proxyurl} ui.debug('proxying through http://%s:%s\n' % - (proxyhost, proxyport)) + (proxy.host, proxy.port)) else: proxies = {} @@ -602,13 +595,9 @@ new_tunnel = False if new_tunnel or tunnel_host == req.get_full_url(): # has proxy - urlparts = urlparse.urlparse(tunnel_host) - if new_tunnel or urlparts[0] == 'https': # only use CONNECT for HTTPS - realhostport = urlparts[1] - if realhostport[-1] == ']' or ':' not in realhostport: - realhostport += ':443' - - h.realhostport = realhostport + u = url(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() h.headers.update(handler.parent.addheaders) return