Fixes #10860: Handle empty port after port delimiter in httplib
This commit is contained in:
parent
551ba20e8e
commit
a5a9a9c369
|
@ -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
|
||||
|
|
|
@ -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):
|
|||
resp = h.getresponse()
|
||||
self.assertEqual(resp.status, 404)
|
||||
|
||||
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."""
|
||||
|
|
Loading…
Reference in New Issue