From 916675bf101bc908bc445781ff6863a13758bd67 Mon Sep 17 00:00:00 2001 From: "Michael W. Hudson" Date: Wed, 25 Sep 2002 10:32:49 +0000 Subject: [PATCH] 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. --- Lib/urllib2.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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(): -- 2.47.3