Javier Ruere created PROTON-995: ----------------------------------- Summary: Url fails to parse URL Key: PROTON-995 URL: https://issues.apache.org/jira/browse/PROTON-995 Project: Qpid Proton Issue Type: Bug Components: python-binding Affects Versions: 0.10 Environment: Linux, Python 3.4.3 Reporter: Javier Ruere
proton.Url apparently parses an URL correctly but then it fails as if it was parsed incorrectly. It appears to fail to handle the escaped characters in the password and using a default port. {quote} >>> import proton >>> from proton.reactor import Container >>> url = >>> 'amqps://a_name:1w6MN0yeUqLUwDdWHk%2FxIR2Z6aIrhslm69lYtHA0r5E%3D@a_namespace.servicebus.windows.net/a_topic/Subscriptions/a_subscription' >>> purl=proton.Url(url) >>> purl Url('amqps://a_name:1w6MN0yeUqLUwDdWHk/xIR2Z6aIrhslm69lYtHA0r5E=@a_namespace.servicebus.windows.net:amqps/a_topic/Subscriptions/a_subscription') >>> container = Container() >>> receiver = container.create_receiver(purl) Traceback (most recent call last): File "/home/javier/tmp/virtualenvs/ss-update/lib/python3.4/site-packages/proton/__init__.py", line 3940, in _port_int return int(value) ValueError: invalid literal for int() with base 10: '1w6MN0yeUqLUwDdWHk' During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/javier/tmp/virtualenvs/ss-update/lib/python3.4/site-packages/proton/__init__.py", line 3943, in _port_int return socket.getservbyname(value) OSError: service/proto not found During handling of the above exception, another exception occurred: Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/javier/tmp/virtualenvs/ss-update/lib/python3.4/site-packages/proton/reactor.py", line 738, in create_receiver session = self._get_session(context) File "/home/javier/tmp/virtualenvs/ss-update/lib/python3.4/site-packages/proton/reactor.py", line 660, in _get_session return self._get_session(self.connect(url=context)) File "/home/javier/tmp/virtualenvs/ss-update/lib/python3.4/site-packages/proton/reactor.py", line 637, in connect if url: connector.address = Urls([url]) File "/home/javier/tmp/virtualenvs/ss-update/lib/python3.4/site-packages/proton/reactor.py", line 577, in __init__ self.values = [Url(v) for v in values] File "/home/javier/tmp/virtualenvs/ss-update/lib/python3.4/site-packages/proton/reactor.py", line 577, in <listcomp> self.values = [Url(v) for v in values] File "/home/javier/tmp/virtualenvs/ss-update/lib/python3.4/site-packages/proton/__init__.py", line 3967, in __init__ if defaults: self.defaults() File "/home/javier/tmp/virtualenvs/ss-update/lib/python3.4/site-packages/proton/__init__.py", line 4010, in defaults self.port = self.port or self.Port(self.scheme) File "/home/javier/tmp/virtualenvs/ss-update/lib/python3.4/site-packages/proton/__init__.py", line 3984, in _get_port return portstr and Url.Port(portstr) File "/home/javier/tmp/virtualenvs/ss-update/lib/python3.4/site-packages/proton/__init__.py", line 3928, in __new__ port = super(Url.Port, cls).__new__(cls, cls._port_int(value)) File "/home/javier/tmp/virtualenvs/ss-update/lib/python3.4/site-packages/proton/__init__.py", line 3949, in _port_int raise ValueError("Not a valid port number or service name: '%s'" % value) ValueError: Not a valid port number or service name: '1w6MN0yeUqLUwDdWHk' >>> >>> purl.port 5671 >>> purl.password '1w6MN0yeUqLUwDdWHk/xIR2Z6aIrhslm69lYtHA0r5E=' >>> purl.host 'a_namespace.servicebus.windows.net' {quote} -- This message was sent by Atlassian JIRA (v6.3.4#6332)