diff options
author | Mark McLoughlin <markmc@redhat.com> | 2013-08-18 01:44:37 +0100 |
---|---|---|
committer | Mark McLoughlin <markmc@redhat.com> | 2013-08-18 01:49:25 +0100 |
commit | 25647951087d8c8605c60d6231640ddb8acb614f (patch) | |
tree | 04634520ff0af8dbd3f11918ab3a43a5f1e4deec | |
parent | c79bd1f24c2ee7a0c822db11f5ff0f764b711d03 (diff) | |
download | oslo-messaging-1.2.0a8.tar.gz |
Fix transport URL parsing bug1.2.0a8
Handle e.g. foo://u:p@/bar. Right now we get:
IndexError: string index out of range
from:
if hostname[0] == '[':
Change-Id: I0bccebb14ad1d37862955e8988d160240bd1cf6d
-rw-r--r-- | oslo/messaging/transport.py | 4 | ||||
-rw-r--r-- | tests/test_urls.py | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/oslo/messaging/transport.py b/oslo/messaging/transport.py index 8fdfca1..62a5480 100644 --- a/oslo/messaging/transport.py +++ b/oslo/messaging/transport.py @@ -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: diff --git a/tests/test_urls.py b/tests/test_urls.py index a83ac40..84f5a17 100644 --- a/tests/test_urls.py +++ b/tests/test_urls.py @@ -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', |