summaryrefslogtreecommitdiffstats
path: root/Lib/urllib2.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/urllib2.py')
-rw-r--r--Lib/urllib2.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 015fdb5..ba0d5b5 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -579,14 +579,19 @@ class ProxyHandler(BaseHandler):
def proxy_open(self, req, proxy, type):
orig_type = req.get_type()
type, r_type = splittype(proxy)
- host, XXX = splithost(r_type)
- if '@' in host:
- user_pass, host = host.split('@', 1)
- if ':' in user_pass:
- user, password = user_pass.split(':', 1)
- user_pass = base64.encodestring('%s:%s' % (unquote(user),
- unquote(password))).strip()
- req.add_header('Proxy-authorization', 'Basic ' + user_pass)
+ if not type or r_type.isdigit():
+ # proxy is specified without protocol
+ type = orig_type
+ host = proxy
+ else:
+ host, r_host = splithost(r_type)
+ user_pass, host = splituser(host)
+ user, password = splitpasswd(user_pass)
+ if user and password:
+ user, password = user_pass.split(':', 1)
+ user_pass = base64.encodestring('%s:%s' % (unquote(user),
+ unquote(password))).strip()
+ req.add_header('Proxy-authorization', 'Basic ' + user_pass)
host = unquote(host)
req.set_proxy(host, type)
if orig_type == type: