From: Michael W. Hudson Date: Wed, 25 Sep 2002 10:32:49 +0000 (+0000) Subject: backport jhylton's checkin of X-Git-Tag: v2.2.2b1~115 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=916675bf101bc908bc445781ff6863a13758bd67;p=thirdparty%2FPython%2Fcpython.git backport jhylton's checkin of revision 1.32 of urllib2.py Fix from SF patch #527518: proxy config with user+pass authentication. Bug fix candidate. --- diff --git a/Lib/urllib2.py b/Lib/urllib2.py index 512d90c06044..e9f2d52a9ed1 100644 --- a/Lib/urllib2.py +++ b/Lib/urllib2.py @@ -456,8 +456,11 @@ class ProxyHandler(BaseHandler): host, XXX = splithost(r_type) if '@' in host: user_pass, host = host.split('@', 1) - user_pass = base64.encodestring(unquote(user_pass)).strip() - req.add_header('Proxy-Authorization', 'Basic '+user_pass) + if ':' in user_pass: + user, password = user_pass.split(':', 1) + user_pass = base64.encodestring('%s:%s' % (unquote(user), + unquote(password))) + req.add_header('Proxy-Authorization', 'Basic ' + user_pass) host = unquote(host) req.set_proxy(host, type) if orig_type == type: @@ -762,7 +765,9 @@ class AbstractHTTPHandler(BaseHandler): except socket.error, err: raise URLError(err) - h.putheader('Host', host) + scheme, sel = splittype(req.get_selector()) + sel_host, sel_path = splithost(sel) + h.putheader('Host', sel_host or host) for args in self.parent.addheaders: h.putheader(*args) for k, v in req.headers.items():