summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorŁukasz Langa <lukasz@langa.pl>2011-10-19 00:04:46 (GMT)
committerŁukasz Langa <lukasz@langa.pl>2011-10-19 00:04:46 (GMT)
commit6c4e1aed4b9ac08ee92d54d76063c3349757ca87 (patch)
treeac1c064a7eb8c9af8ec315acabbaf2c7cb97b267 /Lib
parent55c7e00fc031956216b5ce8aa20bebc2416ef723 (diff)
parenta5a9a9c3696af0a4a0df74618e63a4d47a62e00f (diff)
downloadcpython-6c4e1aed4b9ac08ee92d54d76063c3349757ca87.zip
cpython-6c4e1aed4b9ac08ee92d54d76063c3349757ca87.tar.gz
cpython-6c4e1aed4b9ac08ee92d54d76063c3349757ca87.tar.bz2
Merged fix for #10860 from 3.2
Diffstat (limited to 'Lib')
-rw-r--r--Lib/http/client.py5
-rw-r--r--Lib/test/test_httplib.py24
2 files changed, 26 insertions, 3 deletions
diff --git a/Lib/http/client.py b/Lib/http/client.py
index a490e2b..88da550 100644
--- a/Lib/http/client.py
+++ b/Lib/http/client.py
@@ -678,7 +678,10 @@ class HTTPConnection:
try:
port = int(host[i+1:])
except ValueError:
- raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])
+ if host[i+1:] == "": # http://foo.com:/ == http://foo.com/
+ port = self.default_port
+ else:
+ raise InvalidURL("nonnumeric port: '%s'" % host[i+1:])
host = host[:i]
else:
port = self.default_port
diff --git a/Lib/test/test_httplib.py b/Lib/test/test_httplib.py
index 1729743..ba97da2 100644
--- a/Lib/test/test_httplib.py
+++ b/Lib/test/test_httplib.py
@@ -161,14 +161,16 @@ class BasicTest(TestCase):
def test_host_port(self):
# Check invalid host_port
- for hp in ("www.python.org:abc", "www.python.org:"):
+ for hp in ("www.python.org:abc", "user:password@www.python.org"):
self.assertRaises(client.InvalidURL, client.HTTPConnection, hp)
for hp, h, p in (("[fe80::207:e9ff:fe9b]:8000",
"fe80::207:e9ff:fe9b", 8000),
("www.python.org:80", "www.python.org", 80),
+ ("www.python.org:", "www.python.org", 80),
("www.python.org", "www.python.org", 80),
- ("[fe80::207:e9ff:fe9b]", "fe80::207:e9ff:fe9b", 80)):
+ ("[fe80::207:e9ff:fe9b]", "fe80::207:e9ff:fe9b", 80),
+ ("[fe80::207:e9ff:fe9b]:", "fe80::207:e9ff:fe9b", 80)):
c = client.HTTPConnection(hp)
self.assertEqual(h, c.host)
self.assertEqual(p, c.port)
@@ -539,6 +541,24 @@ class HTTPSTest(TestCase):
self.assertEqual(resp.status, 404)
del server
+ def test_host_port(self):
+ # Check invalid host_port
+
+ for hp in ("www.python.org:abc", "user:password@www.python.org"):
+ self.assertRaises(client.InvalidURL, client.HTTPSConnection, hp)
+
+ for hp, h, p in (("[fe80::207:e9ff:fe9b]:8000",
+ "fe80::207:e9ff:fe9b", 8000),
+ ("www.python.org:443", "www.python.org", 443),
+ ("www.python.org:", "www.python.org", 443),
+ ("www.python.org", "www.python.org", 443),
+ ("[fe80::207:e9ff:fe9b]", "fe80::207:e9ff:fe9b", 443),
+ ("[fe80::207:e9ff:fe9b]:", "fe80::207:e9ff:fe9b",
+ 443)):
+ c = client.HTTPSConnection(hp)
+ self.assertEqual(h, c.host)
+ self.assertEqual(p, c.port)
+
class RequestBodyTest(TestCase):
"""Test cases where a request includes a message body."""