Fix transport URL parsing bug

Handle e.g. foo://u:p@/bar. Right now we get:

 IndexError: string index out of range

from:

     if hostname[0] == '[':

Change-Id: I0bccebb14ad1d37862955e8988d160240bd1cf6d
This commit is contained in:
Mark McLoughlin 2013-08-18 01:44:37 +01:00
parent c79bd1f24c
commit 2564795108
2 changed files with 10 additions and 1 deletions

View File

@ -386,7 +386,9 @@ class TransportURL(object):
if ':' in username:
username, password = username.split(':', 1)
if hostname[0] == '[':
if not hostname:
hostname = None
elif hostname.startswith('['):
# Find the closing ']' and extract the hostname
host_end = hostname.find(']')
if host_end < 0:

View File

@ -78,6 +78,13 @@ class TestParseURL(test_utils.BaseTestCase):
dict(host='host', port=1234,
username='u', password='p'),
]))),
('creds_no_host',
dict(url='foo://u:p@/bar',
expect=dict(transport='foo',
virtual_host='bar',
hosts=[
dict(username='u', password='p'),
]))),
('multi_host',
dict(url='foo://u:p@host1:1234,host2:4321/bar',
expect=dict(transport='foo',