diff options
Diffstat (limited to 'Lib/urllib2.py')
-rw-r--r-- | Lib/urllib2.py | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/Lib/urllib2.py b/Lib/urllib2.py index 2c4a3e1..60c60d4 100644 --- a/Lib/urllib2.py +++ b/Lib/urllib2.py @@ -458,8 +458,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: @@ -764,7 +767,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(): |